Я получаю неправильный вывод с округлением 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 ответ
Это даже половина, а не все. Когда число находится на полпути между двумя вариантами того, к чему оно может округляться, оно идет к четной цифре. Если это ближе к одному варианту, чем другой, он выбирает ближе вариант.