java - 处理金钱和小数

标签 java bigdecimal money-format

我正在尝试编写一个将钱存储在变量中的程序, 所以我正在使用 Bigdecimal 类型,因为这里的其他成员建议它.. 但我想做的是……用户可以输入任何他想表达的意思,他可以输入

 24
 or
 24.0
 or
 24.00

如您所见,我为用户提供了灵 active ,让他们可以在自己方便的时候打字。但最后变量将存储在一个数组(BigDecimal 数组)中,所以当它存储时我想存储并且只有 2 个小数位。为什么我这么说是因为如果用户输入 24 我想存储 24.00 而不是 24 或 24.0 只是 24.00 或者如果他输入 24.00 那么它将被存储而不对其进行任何修改..如何做到这一点.. 下面提供了示例代码。

    BigDecimal bala;
    BigDecimal balintake;
    static BigDecimal[] bal= new BigDecimal[20];
    Scanner sc = new Scanner(System.in);
    balintake = sc.nextBigDecimal();

     bala.setScale(2,RoundingMode.HALF_UP);
     bal[0] = bala;

但这并不符合我的要求。

最佳答案

请记住,BigDecimal 对象是不可变的。所以,当你这样做的时候

balintake.setScale(2,RoundingMode.HALF_UP);

你应该把它赋值给一个变量,比如

balintake = balintake.setScale(2,RoundingMode.HALF_UP);

关于java - 处理金钱和小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12067895/

相关文章:

java - 如何在 JUnit 测试用例中获取传递给 Runtime.getRuntime.exit(value) 的值

java - 以编程方式截取屏幕截图

Java : Rounding a decimal value to HALF_EVEN

印度货币的 PHP 货币格式?

php - 定义跨平台money_format函数(Linux和Windows)

java - jsp 的 Bean 错误 :include

java - 使用 map 检查是否包含数组。但不起作用

java - BigDecimal 添加错误值

c# - 一种实现幂函数的有效方法 : Why Math. Exp(x * Math.Log(n)) 比 Math.Pow() 更快?

php - 如果处理 float 的钱很糟糕,那么为什么 money_format() 会这样做呢?