以下代码的输出使我感到困惑。为什么有时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
这里的决定因素是什么?
答案 0 :(得分:5)
这是因为浮点算术的IEEE标准(IEEE 754),该标准是由电气和电子工程师协会(IEEE)于1985年建立的浮点计算技术标准。
IEEE浮点标准,..指定每个浮点 点算术运算,包括零除, 具有 明确的结果 。该标准支持带符号的零以及 无穷大和 NaN (不是数字)。有两个零:+0(正零)和−0(负零),并且此 删除任何 。
在IEEE 754算术中,
a ÷ +0
为正无穷大 正,负无穷大(当a
为负时)和 NaN (当a
< / p>