根据官方java文档
RoundingMode HALF_EVEN:
舍入模式,向最近的邻居舍入,除非两个邻居距离相等,在这种情况下,向偶数邻居舍入。
既然这是等距邻居的情况,为什么它仍然四舍五入到6.33而不是6.32
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("0.00");
df.setRoundingMode(RoundingMode.HALF_EVEN);
System.out.println((df.format(6.325)));
}
我期望Half_EVEN舍入的输出为6.32,但结果却是6.33。
如有任何帮助,不胜感激
感谢浮点数不能准确地表示某些数字(这里有很多关于如何处理这个问题的问题)。
最接近6.325的双精度数是6.32500000000000017763568394002504646778106689453125,这就是为什么它被四舍五入到6.33。
你可以搜索像"双精度浮动转换器在线"对于可以显示浮点数精确二进制表示的web服务。