Режим округления с BigDecimal в Java
Следующий код, который используетRoundingMode.HALF_EVEN
,
BigDecimal value1 = new BigDecimal("4.5");
value1=value1.setScale(0, RoundingMode.HALF_EVEN);
BigDecimal value2 = new BigDecimal("6.5");
value2=value2.setScale(0, RoundingMode.HALF_EVEN);
System.out.println(value1+"\n"+value2);
дисплеи4
а также6
соответственно. Мне кажется, что он должен отображать5
а также7
соответственно, потому что цифра слева от отброшенной дробной части (которая в данном случае равна 5)странный, В этом случае он выполняетRoundingMode.HALF_UP
И в случаеRoundingMode.HALF_UP
, RoundingMode.UP
выполняется, когда отброшенная дробная часть> = 0,5 (что верно), в противном случаеRoundingMode.DOWN
выполняется.