2

可能重复:
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,我不知道为什么?

4

3 回答 3

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

于 2013-01-07T18:59:37.733 回答
3

BigDecimal 是不可变的。您需要将结果分配给变量。

于 2013-01-07T19:00:24.453 回答
2

num.divide不改变num它返回结果。

尝试:

num = num.divide(divisor, BigDecimal.ROUND_HALF_UP)
于 2013-01-07T19:00:24.110 回答