2

重複の可能性:
BigDecimal の追加

明らかな何かが欠けているように感じますが、それが何であるかを理解できません。BigDecimal2 つの数値の除算の小数部分を取得するために使用しようとしています。非常に単純なケースでは、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

BigDecimals は不変です。結果を変数に代入する必要があります。

于 2013-01-07T19:00:24.453 に答える
2

num.divide変更せずnum、結果を返します。

試す:

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