Double.NaN是一个对象

时间:2011-11-28 12:21:11

标签: java

public class Double1 {    

    public static double parseDouble(String _s, double _def) {
        try {
            return Double.parseDouble(_s);
        }
        catch(Exception e) {
        }
        return _def;
    }

    public static void main(String[] args) {
        Double1 db=new Double1();
        boolean ab=db.parseDouble("vijay", Double.NaN)!=Double.NaN?true:false;
        System.out.println("ab value: "+ ab);
        System.out.println(Double.NaN==Double.NaN);
    }
}

它应返回true,因为上面的代码返回false。为什么呢?

2 个答案:

答案 0 :(得分:14)

NaN比较一切 - 包括他们自己。

您可以使用

检查NaN
Double.isNaN(doubleValue)

除了恰好使用此行为之外,其他任何事情都没有:如果x != x,则值x为NaN。

答案 1 :(得分:0)

但这很正常。您的parseDouble方法尝试解析“vijay”并返回_def,因为“vijay”不是双精度值。db.parseDouble("vijay", Double.NaN)将返回Double.NaN,最后Double.NaN!=Double.NaN为false。