Floating-point types in
Java follow IEEE754 standard.
http://www.xdweb.net/~dibblego/miscellaneous/documents/IEEE754.pdf java.lang.Double follows its API Specification.
Here is an excerpt:
Note that in most cases, for two instances of class Double, d1 and d2, the value of d1.equals(d2) is true if and only if
d1.doubleValue() == d2.doubleValue()
also has the value true. However, there are two exceptions:
If d1 and d2 both represent Double.NaN, then the equals method returns true, even though Double.NaN==Double.NaN has the value false.
If d1 represents +0.0 while d2 represents -0.0, or vice versa, the equal test has the value false, even though +0.0==-0.0 has the value true.
This definition allows hash tables to operate properly.
Your assertion that the following code produces false is incorrect:
It prints true.
[ February 09, 2005: Message edited by: Tony Morris ]