As Rob has hinted, there is in fact a float value that would work for, but it's not 2.0f. There are more hints in the Java Language Specification, but the JLS is heavy reading.

A NaN value is used to represent the result of certain invalid operations such as dividing zero by zero.

May be It's the way java allocate the variable (with the NaN constant). May be Someone has a better idea(actual reason) Campbell/Rob Prime/Jesper?

[ August 29, 2008: Message edited by: Vijitha Kumara ] [ August 29, 2008: Message edited by: Vijitha Kumara ]

Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 36514

16

posted

0

Go to the Java Language Specification link I provided earlier and look for �4.2.3 and �4.2.4.

You can get NaN from various operations; 0f / 0f or Math.sqrt(-1) will both give Nan. In the case of the sqrt method (which is actually written in C or C++) there is something in it which in Java would be like this:That acts as a guard against trying to calculate the square root of 0 (which is 0) or of a negative number which is not-a-number.

In the Float API documentation it says that NaN is not ordered; that becomes obvious when we try some arithmetic.

2 * 0 = 0 3 * 0 = 0 ∴ 2 * 0 = 3 * 0 Multiply both sides by 0 / 0, which is Nan; that gets rid of the zeroes ∴ 2 = 3

The only way you can get out of this nonsense result is saying that NaN is not equal to itself.