Sprawdź dwie wartości float / double dla dokładnej równości

Jaki jest elegancki, czytelny i niewerbalny sposób porównywania dwóch wartości zmiennoprzecinkowych dla dokładnej równości?

Jakkolwiek to może brzmieć, jest to zły problem. The== operator nie wykonuje pracy dla NaN i ma specjalne traktowanie dla zera:

(+0.0 == -0.0) -> true
Double.NaN == Double.NaN -> false

Ale chcę określić, czy dwie wartości są dokładnie takie same (ale ja to robię)nie dbać o różne wzory NaN, więc każdy NaN == dowolny inny NaN -> prawda).

I mogą zrób to z tym brzydkim fragmentem kodu Monster:

Double.doubleToLongBits(a) == Double.doubleToLongBits(b)

Czy jest lepszy sposób na napisanie tego (i uczynienie intencji oczywistym)?

questionAnswers(2)

yourAnswerToTheQuestion