[英]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
是当正 , 负无穷a
是负和NaN当a = ±0.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.