可能重复:
Addition for BigDecimal
我觉得我错过了一些明显的东西,但却无法弄清楚它是什么。我正在尝试使用BigDecimal
来获取两个数字之间除法的小数部分。一个非常简单的情况,1.00除以3.00应为0.(3)重复。但是,我一直得到1.00的结果。
BigDecimal num = new BigDecimal(1.00).setScale(2);
BigDecimal divisor = new BigDecimal(3.00).setScale(2);
num.divide(divisor, BigDecimal.ROUND_HALF_UP);
System.out.print(num);
我的结果是1.00,我无法找出原因?
答案 0 :(得分:14)
忽略num.divide
的结果。您需要将其设置回变量
BigDecimal num = new BigDecimal(1.00).setScale(2);
BigDecimal divisor = new BigDecimal(3.00).setScale(2);
BigDecimal result = num.divide(divisor, BigDecimal.ROUND_HALF_UP);
System.out.print(result);
这会打印0.33
答案 1 :(得分:3)
BigDecimals是不可变的。您需要将结果分配给变量。
答案 2 :(得分:2)
num.divide
不会更改num
它会返回结果。
尝试:
num = num.divide(divisor, BigDecimal.ROUND_HALF_UP)