2017-09-13 59 views
-5

我使用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

回答

3

您的情況與您的輸出不符 - 您檢查結果是否是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");