Я натолкнулся на определение NaN
в Double.class
. В нем говорится:
/**
* 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;
Почему им нужно было записать суффикс d в первую часть 0.0 в определении NaN?
Это было специально или случайно?