Poniższy kod, który wykorzystuje RoundingMode.HALF_EVEN
,tryb zaokrąglania z BigDecimal Java
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);
wyświetlacze 4
i 6
odpowiednio. Wydaje mi się, że powinien on wyświetlać odpowiednio: 5
i 7
, ponieważ cyfra po lewej stronie odrzuconej części ułamkowej (która w tym przypadku wynosi 5) to nieparzysta. W tym przypadku, wykonuje to RoundingMode.HALF_UP
A w przypadku RoundingMode.HALF_UP
, RoundingMode.UP
przeprowadza się, gdy część odrzucona frakcjonowanej> = 0,5 (co jest prawdą), poza RoundingMode.DOWN
jest wykonywana.
'4' i' 6' to 'NAWET 'w' ROUND_HALF_EVEN'. '.5' jest częścią' HALF'. –
Dla potomności, musiałem to przeczytać kilka razy, aby ją zdobyć. Przykładem, który miał dla mnie sens, jest to, że jeśli zaokrąglasz 6.5, jesteś w równej odległości od 6 i 7. Ponieważ 6 jest równy, wybrałeś tę. –