float temp = Float.NaN;
if(temp == Float.NaN){
System.out.println("ok");
}
System.out.println("end");
float temp2 = Float.POSITIVE_INFINITY;
if(temp2 == Float.POSITIVE_INFINITY){
System.out.println("ok");
}
System.out.println("end");
输出结果为:
end
ok
end当然,用Float.IsNaN 结果不同。但我想知道为什么?谢谢各位
if(temp == Float.NaN){
System.out.println("ok");
}
System.out.println("end");
float temp2 = Float.POSITIVE_INFINITY;
if(temp2 == Float.POSITIVE_INFINITY){
System.out.println("ok");
}
System.out.println("end");
输出结果为:
end
ok
end当然,用Float.IsNaN 结果不同。但我想知道为什么?谢谢各位
return (v != v);
}
这个就是isNaN的实现,可见NaN不等于任何东西,包括它自身
if(temp == Float.NaN)
中没有调用 isNaN方法~为什么会不等于呢?
偶菜鸟哈~
想知道是不是虚拟机中自己处理了还是什么?
return (v != v);
}你看清楚没有啊!一个数字不等于它自己本身就说明它是NaN了!这个就是JVM的定义!