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
。为什么呢?
答案 0 :(得分:14)
NaN比较一切 - 包括他们自己。
您可以使用
检查NaNDouble.isNaN(doubleValue)
除了恰好使用此行为之外,其他任何事情都没有:如果x != x
,则值x为NaN。
答案 1 :(得分:0)
但这很正常。您的parseDouble方法尝试解析“vijay”并返回_def,因为“vijay”不是双精度值。db.parseDouble("vijay", Double.NaN)
将返回Double.NaN
,最后Double.NaN!=Double.NaN
为false。