该行为在Javadoc中有很好的描述:
舍入模式向“最近的邻居”舍入, 除非两个邻居都等距,在这种情况下,向偶数邻居舍入 。
因此,给定数字4.5,当您调用它时,它恰好位于4到5之间的数字范围的中间:
BigDecimal value1 = new BigDecimal("4.5").setScale(RoundingMode.ROUND_HALF_EVEN);
运行时也需要找出要舍入的邻居,也就是应该舍入到4或舍入到5?通常,它将基于哪个值4.5更接近,但在这种情况下,它接近 两个
邻居。与其随意选择最终结果,不如选择偶数。这是的行为
ROUND_HALF_EVEN。如果需要,您可以指定
ROUND_HALF_UP最终结果为5,而不是4。此外,请记住,关于四舍五入的确定取决于最终结果(而不是整数的小数部分)大十进制数,就像您已经假设的那样)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)