对于Double / Float,当从十进制转换为二进制表示形式时,会存在一些舍入误差和精度损失。
例如,将float设置为“ 6.1”,然后再次打印出来,则可能会得到报告值,例如“ 6.099999904632568359375”。
这是检查两个Double对象是否相等的更好选择:
使用BigDecimal
要么
(Math.abs(double1-double2)

最佳答案

这取决于您的用例。如果您使用货币,请使用BigDecimal。
否则,如果您可以接受近似值,请使用Math.abs(double1 - double2) < epsilon

10-06 01:34