【发布时间】:2010-09-26 15:38:14
【问题描述】:
我编译的代码错误地尝试添加数字和 Double.NaN。我想知道它是否抛出了一个没有被捕获的异常?有谁知道这种情况是怎么处理的?
谢谢。
【问题讨论】:
我编译的代码错误地尝试添加数字和 Double.NaN。我想知道它是否抛出了一个没有被捕获的异常?有谁知道这种情况是怎么处理的?
谢谢。
【问题讨论】:
在 NaN 上加一个数得到 NaN。预计不会导致异常。我知道这符合 IEEE 754。
【讨论】:
回答史蒂夫 B 的问题:
POSITIVE_INFINITY 是您可以存储的最大正数,如果您有无限的存储空间。如果没有这种奢侈,我们必须使用像 1.0 / 0.0 这样的结构,它做得很好。 NEGATIVE_INFINITY 也是如此,但最大的负数也是如此。
NaN 通常定义为 0.0 / 0.0,因为没有 0/0 这样的数字完全符合 NaN 的条件。
【讨论】:
public static void main(String args[])
{
Double d = Double.NaN + 1.0;
System.out.println(d);
}
打印 Double.Nan。谁能解释一下源码实现?
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
public static final double NaN = 0.0d / 0.0;
【讨论】: