Modo de redondeo con BigDecimal en Java
El siguiente código que utilizaRoundingMode.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);
muestra4
y6
respectivamente. Me parece que debería mostrar5
y7
respectivamente porque el dígito a la izquierda de la parte fraccionaria desechada (que es 5 en este caso) esimpar. En este caso, realiza.RoundingMode.HALF_UP
Y en caso deRoundingMode.HALF_UP
, RoundingMode.UP
se realiza cuando la parte fraccionaria desechada es> = 0.5 (lo que es cierto), de lo contrarioRoundingMode.DOWN
es interpretado.