HALF_UPを使用して、最も近い値に丸め

I.ペトロフ:

私は、最も近い整数にラウンドBigDecimal値にしたいです。

私はこの問題から使用済みのソリューションしようとした最も近い整数値に丸めます。JavaのBigDecimalが、それは私のために動作しません。

BigDecimal scaled = value.setScale(0, RoundingMode.HALF_UP);
System.out.println(value + " -> " + scaled);

このような場合には、右に動作します。

100.12 -> 100.00
100.44 -> 100.00
100.50 -> 101.00
100.75 -> 101.00

しかし、それは場合には失敗しました

    100.47 -> 100 instead of 101.

このコードは動作しないのはなぜ?

user7294900:

あなたは、あなたのケースでの使用には、常に数を切り上げることを期待RoundingMode .UP

HALF_UPからのみ丸めます.5アップ

両隣が等距離である場合を除き、その場合、ラウンドアップには、「最近傍」へのラウンドへの丸めモード。

これらの丸め演算の結果を示す表:

Input Number  UP  DOWN    CEILING FLOOR   HALF_UP HALF_DOWN   HALF_EVEN   UNNECESSARY
5.5           6     5      6       5       6          5         6   throw ArithmeticException
2.5           3     2      3       2       3          2         2   throw ArithmeticException
1.6           2     1      2       1       2          2         2   throw ArithmeticException
1.1           2     1      2       1       1          1         1   throw ArithmeticException

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=232805&siteId=1