Округление до ближайшего значения, используя HALF_UP

И. Петров:

Я хочу, чтобы обогнуть значение 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=232801&siteId=1
рекомендация