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

下面代码的输出让我很困惑。为什么NaN有时和Infinity 有时?


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

这里的决定因素是什么?



慕码人2483693
浏览 227回答 1
1回答

月关宝盒

这是因为IEEE 浮点算术标准 (IEEE 754)是由电气和电子工程师协会 (IEEE) 于 1985 年制定的浮点计算技术标准。目的:IEEE 浮点标准,.. 指定每个浮点算术运算,包括除以零,都有一个明确定义的结果。该标准支持带符号的零,以及 无穷大和NaN(不是数字)。有两个零:+0(正零)和 -0(负零),这消除了除法时的任何歧义。规则:在IEEE 754算术运算,a ÷ +0是正无穷大时a是 正,负无穷大时a是负,并且为NaN时a = ±0.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java