下面代码的输出让我很困惑。为什么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);}输出是:NaNNaNInfinityInfinityNaNException in thread "main" java.lang.ArithmeticException: / by zero这里的决定因素是什么?
1 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
这是因为IEEE 浮点算术标准 (IEEE 754)是由电气和电子工程师协会 (IEEE) 于 1985 年制定的浮点计算技术标准。
目的:
IEEE 浮点标准,.. 指定每个浮点算术运算,包括除以零,都有一个明确定义的结果。该标准支持带符号的零,以及 无穷大和NaN(不是数字)。有两个零:+0(正零)和 -0(负零),这消除了除法时的任何歧义。
规则:
在IEEE 754算术运算,
a ÷ +0
是正无穷大时a
是 正,负无穷大时a
是负,并且为NaN时a = ±0.
添加回答
举报
0/150
提交
取消