解释中可以找到约书亚Bloch的Effective
Java的:
float和
Float需要,因为存在的特殊待遇
-0.0,
NaN,正无穷大,和负无穷大。这就是为什么Sun
JVM
Float.equals()看起来像这样(6u21):
public boolean equals(Object obj){ return (obj instanceof Float)&& (floatToIntBits(((Float)obj).value) == floatToIntBits(value));}因此,不行,
Math.abs()使用ε并不是一个很好的选择。从Javadoc:
如果f1和f2都表示Float.NaN,则即使Float.NaN ==
Float.NaN的值为false,equals方法也将返回true。如果f1表示+ 0.0f,而f2表示-0.0f,反之亦然,即使0.0f
==-0.0f的值为true,相等测试的值为false。
这就是Eclipse自动生成的代码为您做到这一点的原因。



