以下代码使用RoundingMode.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);
分别显示4
和6
。在我看来,它应该分别显示5
和,7
因为丢弃的小数部分(在这种情况下为 5)左侧的数字是奇数。在这种情况下,它执行RoundingMode.HALF_UP
在 的情况下RoundingMode.HALF_UP
, RoundingMode.UP
当丢弃的小数部分 >=0.5(这是真的)时执行,否则RoundingMode.DOWN
执行。