相关疑难解决方法(0)

为什么Double.NaN = 0.0d/0.0的定义中有"d"?

我刚刚看到了NaNin 的定义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;
Run Code Online (Sandbox Code Playgroud)

我知道,根据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;
Run Code Online (Sandbox Code Playgroud)

为什么他们需要在NaN定义中将后缀d写入0.0的第一部分?

这是故意的还是偶然的?

java

27
推荐指数
3
解决办法
6129
查看次数

其他NaN值有哪些?

对文件java.lang.Double.NaN说,这是

保持类型的非数字(NaN)值的常量double.它相当于返回的值Double.longBitsToDouble(0x7ff8000000000000L).

这似乎暗示还有其他人.如果是这样,我如何抓住它们,这可以移植吗?

需要明确的是,我想找到的doublex,使得

Double.doubleToRawLongBits(x) != Double.doubleToRawLongBits(Double.NaN)
Run Code Online (Sandbox Code Playgroud)

Double.isNaN(x)
Run Code Online (Sandbox Code Playgroud)

都是真的.

java floating-point nan ieee-754

9
推荐指数
2
解决办法
2568
查看次数

标签 统计

java ×2

floating-point ×1

ieee-754 ×1

nan ×1