是什么决定了Java除法运算中的Nan和Infinity

时间:2018-08-11 15:14:01

标签: java exception division dividebyzeroexception

以下代码的输出使我感到困惑。为什么有时NaN,而有时是无穷大?

public static void main (String[] args) {

    double a = 0.0;
    double b = 1.0;
    int c = 0; 
    System.out.println(a/0.0);
    System.out.println(a/0);
    System.out.println(b/0.0);
    System.out.println(b/0);
    System.out.println(c/0.0);
    System.out.println(c/0);
}

输出为:

NaN
NaN
Infinity
Infinity
NaN
Exception in thread "main" java.lang.ArithmeticException: / by zero

这里的决定因素是什么?

1 个答案:

答案 0 :(得分:5)

这是因为浮点算术的IEEE标准(IEEE 754),该标准是由电气和电子工程师协会(IEEE)于1985年建立的浮点计算技术标准。


目的:

  

IEEE浮点标准,..指定每个浮点   点算术运算,包括零除, 具有   明确的结果 。该标准支持带符号的零以及   无穷大 NaN (不是数字)。有两个零:+0(正零)和−0(负零),并且此 删除任何   


规则:

  

在IEEE 754算术中,a ÷ +0正无穷大   负无穷大(当a时)和 NaN (当a < / p>


Source

相关问题