我正在使用以下代码,结合java BigDecimal的setScale方法和half_even舍入模式,并得到以下结果。
new BigDecimal(1.115).setScale(2, RoundingMode.HALF_EVEN).toPlainString()
结果:1.11
期望值:1.12
由于5左侧最接近的偶数是2,所以我期望的结果是1.12。但实际结果为1.11。再次说明,
new BigDecimal(1.145).setScale(2, RoundingMode.HALF_EVEN).toPlainString()
结果:1.15
期望值:1.14
因为5左侧的数字是偶数4,所以我期望结果为1.14。有什么解释吗?
setScale
,它可以正常工作(我测试过了)。BigDecimal的四舍五入功能也可以正常工作。你的问题是将浮点数放入BigDecimal之前,它已经存在一些误差,偏离了四舍五入点。 - Thilo