日期:2014-05-20  浏览次数:20654 次

关于java.lang.Math.max方法的源码看不懂,求指点
下面是Math.max方法中float类型的重载方法的源代码
Java code

 public static float max(float a, float b) {
        if (a != a) return a;    //If either value is NaN, then the result is NaN.
    if ((a == 0.0f) && (b == 0.0f)
        && (Float.floatToIntBits(a) == negativeZeroFloatBits)) {
        return b;
    }
    return (a >= b) ? a : b;
    }


但是 if (a != a) return a;这句看不懂啊,注释里说如果任意值不是float类型,结果就是那个非数字?
返回值不是float类型的吗?
而且if (a != a)这个怎么能做判断,难道a非数字时就会返回true吗?我这里a为非数字完全不能编译啊。。
我是新手,学了重载,想看看官方是怎么写的。。结果看不懂,求指点谢谢了

------解决方案--------------------
http://topic.csdn.net/u/20090918/11/a5058986-ed4a-4ef1-921b-a02f64848ead.html希望对你有用吧,呵呵
------解决方案--------------------
任何数与nan比较,都返回NaN