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 结果不同。但我想知道为什么?谢谢各位

解决方案 »

  1.   

    static public boolean isNaN(float v) {
      return (v != v);
    }
    这个就是isNaN的实现,可见NaN不等于任何东西,包括它自身
      

  2.   

    float temp = Float.NaN;
    if(temp == Float.NaN)
    中没有调用 isNaN方法~为什么会不等于呢?
    偶菜鸟哈~
    想知道是不是虚拟机中自己处理了还是什么?
      

  3.   

    static public boolean isNaN(float v) {
      return (v != v);
    }你看清楚没有啊!一个数字不等于它自己本身就说明它是NaN了!这个就是JVM的定义!