Ich habe ein Double in Java und möchte überprüfen, ob es ist NaN
. Was ist der beste Weg, dies zu tun?
283
Verwenden Sie die statische Double.isNaN(double)
Methode oder Ihre Double
‚s - .isNaN()
Methode.
// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
Einfach machen:
if (var == Double.NaN) {
...
}
ist nicht ausreichend, da der IEEE-Standard für NaN- und Gleitkommazahlen definiert ist.
Double.isNaN should be (true)
nette Antwortvalue == Double.NaN
funktioniert nicht, funktioniert aberDouble.isNaN(value)
einwandfrei.Versuchen Sie
Double.isNaN()
:Beachten Sie, dass [
double.isNaN()
] nicht funktioniert, da Doppelpacks ohne Box keine Methoden zugeordnet sind.quelle
Double.isNan()
und nichtdouble.IsNan()
, oder?Möglicherweise möchten Sie auch prüfen, ob ein Wert über endlich ist
Double.isFinite(value)
. Seit Java 8 gibt es eine neue Methode in derDouble
Klasse, mit der Sie sofort überprüfen können, ob ein Wert nicht NaN und unendlich ist.quelle
Sie können mit NaN nach NaN suchen
var != var
.NaN
ist nicht gleichNaN
.EDIT : Dies ist wahrscheinlich die mit Abstand schlechteste Methode. Es ist verwirrend, schrecklich für die Lesbarkeit und insgesamt schlechte Praxis.
quelle
isNan
besser für die Lesbarkeit, aber er funktioniert, oder? Und dieisNan
Methode verwendet dies, um zu überprüfenNaN
.isNaN
tut dies unter der Haube, aber wie funktioniert es? Wie gleicht sich etwas nicht?Anfänger brauchen praktische Beispiele. Versuchen Sie also den folgenden Code.
quelle
Das folgende Code-Snippet hilft bei der Bewertung des NaN mit primitivem Typ.
double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;
quelle