Ich habe ein Double in Java und möchte überprüfen, ob es ist NaN. Was ist der beste Weg, dies zu tun?
Ich habe ein Double in Java und möchte überprüfen, ob es ist NaN. Was ist der beste Weg, dies zu tun?
Antworten:
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 Antwort
value == Double.NaNfunktioniert nicht, funktioniert aber Double.isNaN(value)einwandfrei.
Versuchen Sie Double.isNaN():
Gibt true zurück, wenn dieser Double-Wert eine Not-a-Number (NaN) ist, andernfalls false.
Beachten Sie, dass [ double.isNaN()] nicht funktioniert, da Doppelpacks ohne Box keine Methoden zugeordnet sind.
Double.isNan()und nicht double.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 der DoubleKlasse, mit der Sie sofort überprüfen können, ob ein Wert nicht NaN und unendlich ist.
/**
* Returns {@code true} if the argument is a finite floating-point
* value; returns {@code false} otherwise (for NaN and infinity
* arguments).
*
* @param d the {@code double} value to be tested
* @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise.
* @since 1.8
*/
public static boolean isFinite(double d)
Sie können mit NaN nach NaN suchen var != var. NaNist nicht gleich NaN.
EDIT : Dies ist wahrscheinlich die mit Abstand schlechteste Methode. Es ist verwirrend, schrecklich für die Lesbarkeit und insgesamt schlechte Praxis.
isNanbesser für die Lesbarkeit, aber er funktioniert, oder? Und die isNanMethode verwendet dies, um zu überprüfen NaN.
isNaNtut dies unter der Haube, aber wie funktioniert es? Wie gleicht sich etwas nicht?
Anfänger brauchen praktische Beispiele. Versuchen Sie also den folgenden Code.
public class Not_a_Number {
public static void main(String[] args) {
// TODO Auto-generated method stub
String message = "0.0/0.0 is NaN.\nsimilarly Math.sqrt(-1) is NaN.";
String dottedLine = "------------------------------------------------";
Double numerator = -2.0;
Double denominator = -2.0;
while (denominator <= 1) {
Double x = numerator/denominator;
Double y = new Double (x);
boolean z = y.isNaN();
System.out.println("y = " + y);
System.out.println("z = " + z);
if (z == true){
System.out.println(message);
}
else {
System.out.println("Hi, everyone");
}
numerator = numerator + 1;
denominator = denominator +1;
System.out.println(dottedLine);
} // end of while
} // end of main
} // end of class