Tryb zaokrąglania z BigDecimal w Javie
Poniższy kod, który używaRoundingMode.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);
wyświetla4
i6
odpowiednio. Wydaje mi się, że powinien się wyświetlić5
i7
odpowiednio, ponieważ cyfra po lewej stronie odrzuconej części ułamkowej (w tym przypadku 5) jestdziwny. W tym przypadku działaRoundingMode.HALF_UP
A w przypadkuRoundingMode.HALF_UP
, RoundingMode.UP
jest wykonywane, gdy odrzucona część ułamkowa jest> = 0,5 (co jest prawdą), w przeciwnym razieRoundingMode.DOWN
jest wykonywane.