【问题标题】:In Java, what happens if you use Double.NaN in an operation?在 Java 中,如果在操作中使用 Double.NaN 会发生什么?
【发布时间】:2010-09-26 15:38:14
【问题描述】:

我编译的代码错误地尝试添加数字和 Double.NaN。我想知道它是否抛出了一个没有被捕获的异常?有谁知道这种情况是怎么处理的?
谢谢。

【问题讨论】:

    标签: java nan


    【解决方案1】:

    在 NaN 上加一个数得到 NaN。预计不会导致异常。我知道这符合 IEEE 754。

    【讨论】:

      【解决方案2】:

      回答史蒂夫 B 的问题:

      POSITIVE_INFINITY 是您可以存储的最大正数,如果您有无限的存储空间。如果没有这种奢侈,我们必须使用像 1.0 / 0.0 这样的结构,它做得很好。 NEGATIVE_INFINITY 也是如此,但最大的负数也是如此。

      NaN 通常定义为 0.0 / 0.0,因为没有 0/0 这样的数字完全符合 NaN 的条件。

      【讨论】:

        【解决方案3】:
        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;
        

        【讨论】:

        • 呃,没看到Gamecat的回答是指这个。
        猜你喜欢
        • 2021-12-31
        • 1970-01-01
        • 2011-08-18
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 2013-06-24
        • 1970-01-01
        相关资源
        最近更新 更多