Я получаю неправильный вывод с округлением BigDecimal ROUND_HALF_EVEN?

У меня проблема с округлением чисел BigDecimal с помощью ROUND_HALF_EVEN как описано здесь.

Я хочу округлить до 2 десятичных знаков:

BigDecimal number1 = new BigDecimal("23.867995");
BigDecimal number2 = new BigDecimal("23.868");
Log.d("tag", number.setScale(2, BigDecimal.ROUND_HALF_EVEN) + ", " + );

Ouptut:

23,87

Но цифра 6 четная, значит, она должна быть 23,86 или нет?

1 ответ

Это даже половина, а не все. Когда число находится на полпути между двумя вариантами того, к чему оно может округляться, оно идет к четной цифре. Если это ближе к одному варианту, чем другой, он выбирает ближе вариант.

Другие вопросы по тегам