NaN加号的区别不会导致NaN值

问题描述:

我使用Double.isNaN()来检测NaN值。 'NaN加号的区别不会导致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 

有没有其他方法可以检测NaN值?

+0

'如果(Double.isNaN(结果)) 的System.out.println( “不NAN”); '?不是。一旦修复:https://ideone.com/KJrKxG它按预期工作 – 2017-09-13 15:55:42

+0

您是否在寻找'.isNaN()'? https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html –

+0

*“是否有任何其他**方法来检测NaN值?”*当然,如果(result != result)',这正是'Double.isNaN(result)'所做的事情。 – Andreas

您的情况与您的输出不符 - 您检查结果是否是NaN,但是然后打印它不是。无论是检查它是不是:

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

或打印,它是:

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