下面代码的输出让我感到困惑。为什么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
这里的决定因素是什么?
这是因为IEEE 浮点运算标准 (IEEE 754)它是由电气和电子工程师协会 (IEEE) 于 1985 年制定的浮点计算技术标准。
目的:
IEEE 浮点标准,.. 规定每个浮点
点算术运算,包括除以零,有一个
明确的结果。该标准支持有符号零,以及infinity and NaN(不是数字)。有两个零:+0(正零)和−0(负零)删除任何
划分时的歧义.
规则:
在 IEEE 754 算术中,a ÷ +0
is 正无穷大 when a
is
positive, 负无穷大 when a
is negative, and NaN when a = ±0.
Source https://en.wikipedia.org/wiki/Division_by_zero
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)