Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!

# NaN values..

Swapnil Trivedi
Ranch Hand
Posts: 106
Given the code:
Float f1 = new Float(Float.NaN);
Float f2 = new Float(Float.NaN);
System.out.println( ""+ (f1 == f2)+" "+f1.equals(f2)+ " "+(Float.NaN == Float.NaN) );

Ans : false,true,false

Although f1.equals(f2) should return false, it returns true. Javadoc gives two exceptional cases:
. If f1 and f2 both represent Float.NaN, then the equals method returns true, even though Float.NaN==Float.NaN has the value false.
. If f1 represents +0.0f while f2 represents -0.0f, or vice versa, the equal test has the value false, even though 0.0f==-0.0f has the value true.

Doubt: IS it true for Double.NaN values also???

marc weber
Sheriff
Posts: 11343
Originally posted by Swapnil Trivedi:
. If f1 and f2 both represent Float.NaN, then the equals method returns true, even though Float.NaN==Float.NaN has the value false.
. If f1 represents +0.0f while f2 represents -0.0f, or vice versa, the equal test has the value false, even though 0.0f==-0.0f has the value true.

Doubt: IS it true for Double.NaN values also???

Well, the API documentation for Double contains the same wording. I wonder how difficult this would be to test?
[ June 25, 2006: Message edited by: marc weber ]

Swapnil Trivedi
Ranch Hand
Posts: 106
I just got that in a practice exam and I posted it here....
My apologies

Regards
Swapnil