Überprüfen Sie zwei float / double-Werte auf exakte Gleichheit
Was ist eine elegante, lesbare und nicht ausführliche Methode, um zwei Gleitkommawerte auf exakte Gleichheit zu vergleichen?
So einfach es auch klingen mag, es ist ein böses Problem. Das==
Der Bediener erledigt die Aufgabe für NaN nicht und hat auch eine Sonderbehandlung für Null:
(+0.0 == -0.0) -> true
Double.NaN == Double.NaN -> false
Ich möchte aber feststellen, ob zwei Werte genau gleich sind (aber ich tue esnicht Achten Sie auf verschiedene NaN-Muster, sodass jedes NaN == jedes andere NaN -> wahr ist.
I können Mach das mit diesem hässlichen Monster-Code:
Double.doubleToLongBits(a) == Double.doubleToLongBits(b)
Gibt es eine bessere Möglichkeit, dies zu schreiben (und die Absicht offensichtlich zu machen)?