1、初看源代码 if(a != a) return a;很不理解,后来一查资料,得知此处是为了判断a是否为number类型,因为只有非number 类型跟它自己比较会返回 false .其实也可以用函数 Double.inNaN() 来实现判断是否为NaN。
</pre><pre name="code" class="java">public static float min(float a, float b) {
if (a != a)
return a; // a is NaN
if ((a == 0.0f) &&
(b == 0.0f) &&
(Float.floatToRawIntBits(b) == negativeZeroFloatBits)) {
// Raw conversion ok since NaN can't map to -0.0.
return b;
}
return (a <= b) ? a : b;
}