关于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