检查两个浮点/双精度值是否完全相等
2022-09-03 04:44:20
什么是比较两个浮点值以获得精确相等的优雅,可读和非冗长的方法?
尽管听起来很简单,但这是一个邪恶的问题。操作员无法完成NaN的工作,并且对零也有特殊处理:==
(+0.0 == -0.0) -> true
Double.NaN == Double.NaN -> false
但是我想确定两个值是否完全相同(但我不关心不同的NaN模式,因此任何NaN ==任何其他NaN ->为真)。
我可以用这个丑陋的怪物代码来做到这一点:
Double.doubleToLongBits(a) == Double.doubleToLongBits(b)
有没有更好的方法来写这个(并使意图显而易见)?