繁体   English   中英

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

[英]What decides Nan and Infinity in java division operations

以下代码的输出使我感到困惑。 为什么有时使用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

这里的决定因素是什么?

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


目的:

IEEE浮点标准..指定每个浮点算术运算(包括除以零)均具有明确的结果 该标准支持带符号的零, 无穷大NaN (非数字)。 有两个零:+0(正零)和−0(负零),这消除了除时的任何歧义


规则:

在IEEE 754算术, a ÷ +0正无穷大a是当负无穷 aNaNa = ±0.


资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM