Проверьте два значения типа float / double на точное равенство
Что такое элегантный, читаемый и не многословный способ сравнения двух значений с плавающей запятой для точного равенства?
Как бы просто это не звучало, это злая проблема.==
оператор не выполняет работу для NaN, а также имеет специальный режим для нуля:
(+0.0 == -0.0) -> true
Double.NaN == Double.NaN -> false
Но я хочу определить, являются ли два значения абсолютно одинаковыми (но яне заботиться о различных шаблонах NaN, поэтому любой NaN == любой другой NaN -> true).
I Можно сделайте это с помощью этого уродливого кода Monster:
Double.doubleToLongBits(a) == Double.doubleToLongBits(b)
Есть ли лучший способ написать это (и сделать намерение очевидным)?