# Nan and ==

P Ventura
Ranch Hand
Posts: 42
Source: http://www.geocities.com/skmajji/Main.html

why the following code prints "True"? It's a comparison between
two constants!?

marc weber
Sheriff
Posts: 11343
Originally posted by P Ventura:
...why the following code prints "True"? It's a comparison between
two constants!? ...

Actually, it prints "False."

Yes, these are "constants," but they are constants representing things that are Not a Number. And because these are not real numbers, they cannot be compared in a real ordinal manner. That is, from a real number perspective, we can't say that one is greater than, less than, or equal to another. So these operations return false (with the exception of NaN != NaN, which must return true since NaN == NaN returns false).

For example, consider that NaN might represent Math.sqrt(-1), or it might represent Math.sqrt(-987654). Neither of these are real numbers, but they're not equal either.

Ranch Hand
Posts: 186
i wonder if that will be even on the exam?
it is not mentioned in the K&B or Apress.

Brandon Bernie
Greenhorn
Posts: 9
It is covered in K&B. I just finished reading it and remember them talking about it. They do not cover it in much detail, however, it is just a simple concept that you should be able to remember.

Mark Uppeteer
Ranch Hand
Posts: 159
pls tell us what page in K&B this is handled? as far as I remember this used to be on the exam for the 1.4 but isn't anymore for java 5.
I wouldn't spend to much time on it...

Kelvin Chenhao Lim
Ranch Hand
Posts: 513
I'm pretty sure that none of the following will be tested in the SCJP exam, but just to add to the discussion:

Other interesting (and probably non-intuitive) double behaviors:
• Double n1 = Double.NaN;

• Double n2 = Double.NaN;
System.out.println(n1.equals(n2)); // prints true even though Double.NaN != Double.NaN

• System.out.println(-0.0 == +0.0); // prints true

• Double n1 = -0.0;

• Double n2 = +0.0;
System.out.println(n1.equals(n2)); // prints false even though -0.0 == +0.0
[ November 14, 2007: Message edited by: Kelvin Lim ]

P Ventura
Ranch Hand
Posts: 42
I agree Kelvin.... ther're very non-intuitive and confusing. Let's hope that aren't in the exam!