Frage

Ich habe ein Doppel in Java und ich möchte überprüfen, ob es NaN ist. Was ist der beste Weg, dies zu tun?

War es hilfreich?

Lösung

Verwenden Sie die statische Double.isNaN(double) Methode oder Ihre Double der IEEE-Standard für NaN und Gleitkommazahlen definiert ist.

Andere Tipps

Versuchen Sie Double.isNaN() :

  

Gibt true zurück, wenn dieser Double-Wert einen Nicht-a-Number (NaN) ist, andernfalls false.

Beachten Sie, dass [double.isNaN()] wird nicht funktionieren, weil unboxed Doppel mit ihnen verbunden sind keine Methoden haben.

Sie können auch die Überprüfung zu prüfen, ob ein Wert über Double.isFinite(value) endlich ist. Da Java 8 gibt es eine neue Methode in Double Klasse, wo man auf einmal ü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 für NaN überprüfen, indem var != var verwenden. NaN nicht gleich NaN.

Bearbeiten : Das ist wohl mit Abstand der schlechtesten Methode. Es ist verwirrend, schrecklich für die Lesbarkeit und die allgemeine schlechte Praxis.

Anfänger brauchen praktische Beispiele. so versucht, den folgenden Code ein.

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

Der folgende Code-Schnipsel hilft Urtyp bewerten halten NaN.

double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top