I just came across the definition of NaN
in Double.class
. It says:
/** * A constant holding a Not-a-Number (NaN) value of type * {@code double}. It is equivalent to the value returned by * {@code Double.longBitsToDouble(0x7ff8000000000000L)}. */ public static final double NaN = 0.0d / 0.0;
I know that according the Java specification these literals represent the same number: 0.0
, 0.0d
, and 0.0D
.
Also for other constants, they did not use the 'd' suffix:
public static final double POSITIVE_INFINITY = 1.0 / 0.0; public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
Why did they need to write the suffix d to the first part of 0.0 in NaN definition?
Was this on purpose or by chance?
D stands for double. F for float. you can read up on the basic primitive types of java here.
NaN and Double. NaN: “A constant holding a Not-a-Number (NaN) value of type double. It is equivalent to the value returned by Double.
Use the IsNaN method to determine whether a value is not a number. The Equality operator considers two NaN values to be unequal to one another. In general, Double operators cannot be used to compare Double. NaN with other Double values, although comparison methods (such as Equals and CompareTo) can.
According to the Oak language spec, the format of floating point literals were:
- 2.0d or 2.0D double
- 2.0f or 2.0F or 2.0 float
but this changed to the familiar Java way by Java version 1.0
A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d.
The change was perhaps made to make it consistent with C-like languages, where the lack of suffix means a double.
So the d
appears to be an historical relic; although, in the linked version of the Oak spec (which is "preliminary"), there is a margin note saying that NaN isn't implemented yet. Perhaps it was implemented in a slightly later version, and has remained the same forever after.
(Props to Mark Rotteveel for the nudge to look up the Oak language spec).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With