[英]Why is there a “d” in the definition of Double.NaN = 0.0d / 0.0?
我刚刚在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的第一部分?
这是故意的还是偶然的?
根据语言规范, 0.0
与0.0d
相同
JLS第3.10.2节描述如下:
如果浮点文字后缀为ASCII字母F或f,则浮点文字的类型为float; 否则其类型为double,并且可以选择以ASCII字母D或d为后缀
制作文字数字浮点的方法之一是使用'。' 在号码。
作者使用d
后缀的原因尚不清楚。 但通常这是为了增加清晰度或减少读者在理解此代码时所需的工作量。 某些人可能知道这些规则,但不是每个人都知道。 其他语言的默认值也可能不同。 因此,在许多情况下,编写更详细的版本会更好。
另一个例子是圆括号:
double a = b + c * d;
VS
double a = b + (c * d);
我更喜欢带括号的那个,因为它更容易阅读(即使所有程序员都知道它们是相同的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.