Die Dokumentation für java.lang.Double.NaN
sagt das ist
Eine Konstante, die einen Not-a-Number (NaN) -Wert vom Typ
double
enthält. Dies entspricht dem vonDouble.longBitsToDouble(0x7ff8000000000000L)
zurückgegebenen Wert.
Dies scheint zu implizieren, dass es andere gibt. Wenn ja, wie bekomme ich sie, und kann dies portabel gemacht werden?
Um klar zu sein, möchte ich die double
-Werte x
so finden, dass
und
%Vor%sind beide wahr.
Java verwendet IEEE 754 für seine Fließkommazahlen und folgt daher deren Regeln.
Laut der Wikipedia-Seite auf NaN ist dies folgendermaßen definiert:
Ein bitweises Beispiel eines IEEE-Gleitkomma-Standards mit einfacher Genauigkeit NaN:
x111 1111 1axx xxxx xxxx xxxx xxxx xxxx
wobeix
egal bedeutet.
Es gibt also einige Bitmuster, die NaN
-Werte sind.
IEEE 754 definiert ein NaN als eine Zahl mit allen Exponentenbits, die 1
und eine Zahl ungleich null in der Mantisse sind.
Sie suchen also nach einer Nummer mit einfacher Genauigkeit:
%Vor%Java behandelt dies wie folgt:
%Vor%Als Summe können Sie ein beliebiges NaN verwenden, das den oben genannten Regeln entspricht (alle Bits 1 in Exponent und Mantisse! = 0).
Tags und Links java floating-point ieee-754 nan