【问题标题】:Dividing 1.0/0.0: output is infinity [duplicate]除以 1.0/0.0:输出为无穷大[重复]
【发布时间】:2015-09-26 06:10:50
【问题描述】:
double d=1.0/0.0;

输出是Infinity

double d=1/0;

输出是ArithmeticException

这两者有什么区别? 这里的无穷大是什么意思?

【问题讨论】:

    标签: java


    【解决方案1】:

    第一种情况被视为 double 上的除法,后一种情况被视为 int 上的除法,因此会出现 ArthimeticException。

    这就是无限的意思

    http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#POSITIVE_INFINITY

    双精度数和浮点数的划分符合IEEE 754 浮点匹配标准,不应引发异常。

    【讨论】:

    【解决方案2】:

    在数学上,除以零是不确定的,尽管可以粗略地认为它是无穷大。 (更严格一点,对于任何 x 值,它都是大于 x 的数字。)

    IEEE754 浮点双精度(Java 使用)表示无穷大。那是 1.0 / 0.0 的结果。从这个意义上说,1.0 / 0.0 是可计算的,因为它发生在浮点运算中。

    整数类型没有无穷大的表示,因此会引发异常。 1 / 0 以整数算法计算。

    【讨论】:

      【解决方案3】:

      浮点数有一种编码“无穷大”的方法。所以无穷大是双变量的有效值。整型变量没有这个选项。所以会抛出异常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-22
        • 1970-01-01
        • 2020-02-20
        • 2019-06-18
        相关资源
        最近更新 更多