下面的代码,它使用RoundingMode.HALF_EVEN
,舍入模式的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);
显示器分别4
和6
。在我看来,它应该分别显示5
和7
,因为丢弃的小数部分(在本例中为5)左边的数字是奇数。在这种情况下,它执行RoundingMode.HALF_UP
并要在RoundingMode.HALF_UP
情况下,RoundingMode.UP
是当丢弃小数部分是> = 0.5(其为真)进行,否则RoundingMode.DOWN
被执行。
'4'和'6'是'ROUND_HALF_EVEN'中的'EVEN'。 '.5'是'HALF'部分。 – 2013-03-12 02:36:38
对于后代,我不得不阅读几次以获得它。一个对我来说很有意义的例子是,如果你四舍五入,那么你距离6和7的距离相等。因为6是平的,所以你选择了那个。 – 2014-07-16 20:07:09