Modo de arredondamento com BigDecimal em Java
O seguinte código que usaRoundingMode.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);
exibe4
e6
respectivamente. Parece-me que deveria mostrar5
e7
respectivamente, porque o dígito à esquerda da parte fracionária descartada (que é 5 neste caso) éímpar. Neste caso, ele executaRoundingMode.HALF_UP
E em caso deRoundingMode.HALF_UP
, RoundingMode.UP
é executada quando a parte fracionária descartada é> = 0.5 (o que é verdadeiro), caso contrárioRoundingMode.DOWN
é desempenhado.