Как работает java.math.roundingmode?JAVA

Программисты JAVA общаются здесь
Anonymous
Как работает java.math.roundingmode?

Сообщение Anonymous »

У меня проблемы с округлением. В частности, после прочтения всего Javadoc, я ожидал следующего кода: < /p>

Код: Выделить всё

int n = (integer between 0 and 9, included)
new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
< /code>

Чтобы вернуть n + 0,56 < /code>. Вместо этого это возвращаемые значения для n 
от 0 до 4 :

Код: Выделить всё

 new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
0.56
new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
1.55
new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
2.56
new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
3.56
new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_UP).doubleValue()
4.55
< /code>

Я также пытался изменить режим округления: < /p>

int n = (integer between 0 and 9, included)
new BigDecimal(n + 0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
ожидание n + 0,55 в результате для каждого n . Вместо этого возвращаемые значения точно такие же, как и предыдущий пример: < /p>

new BigDecimal(0.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
0.56
new BigDecimal(1.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
1.55
new BigDecimal(2.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
2.56
new BigDecimal(3.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
3.56
new BigDecimal(4.555d).setScale(2, RoundingMode.HALF_DOWN).doubleValue()
4.55
< /code>

Я что -то упускаю? < /p>

Подробнее здесь: https://stackoverflow.com/questions/712 ... gmode-work

Вернуться в «JAVA»