我刚刚在Double.class中遇到了NaN的定义。它说:
/**
* 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;
我知道根据Java规范,这些文字代表相同的数字:0.0,0.0d和0.0D。
另外对于其他常量,他们没有使用’d’后缀:
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
为什么他们需要在NaN定义中将后缀d写入0.0的第一部分?
这是有意的还是偶然的?