2017-09-13 3 views
-5

J'utilise Double.isNaN() pour détecter la valeur de NaN. `L'écart de NaN plus le nombre ne résulte pas la valeur de NaN

Double nan = Double.NaN; 
Double num = 1.5; 
Double num2 = 4.5; 

Double result = (nan+num)/num2; 

System.out.println(result);// the result is NaN 

if(Double.isNaN(result)) 
    System.out.println("not NaN");//true 

Existe-t-il un autre moyen de détecter la valeur NaN?

+0

'si (Double.isNaN (résultat)) System.out.println ("non NaN"); '?? n'est pas. Une fois corrigé: https://ideone.com/KJrKxG cela fonctionne comme prévu –

+0

Cherchez-vous '.isNaN()'? https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html –

+0

* "Y a-t-il un autre moyen de détecter la valeur NaN?" * Bien sûr, 'if (result ! = result) ', ce qui est exactement ce que' Double.isNaN (result) 'est en train de faire. – Andreas

Répondre

3

Votre condition ne correspond pas à votre sortie - vous vérifiez si le résultat est en fait un NaN, mais imprimez que ce n'est pas le cas. Soit vérifier qu'il n'est pas:

if (!Double.isNaN(result)) 
    System.out.println("not NaN"); // This won't be reached in your case 

Ou imprimer ce qu'il est:

if (Double.isNaN(result)) 
    System.out.println("NaN");