Java 除以1.0/0.0:输出为无穷大
输出为Java 除以1.0/0.0:输出为无穷大,java,Java,输出为Infinity double d=1.0/0.0; 输出为算术异常 这两者有什么区别? 这里无限的含义是什么?第一种情况被视为双精度上的除法,第二种情况被视为int上的除法,因此是ArthimeticeException 这就是无限的含义 double和float的除法符合浮点匹配的标准,不应引发异常。从数学上讲,零除法是未定义的,尽管它可以粗略地视为无穷大。(稍微严格一点,对于x的任何值,它都大于x。) IEEE754浮点双精度(Java使用)具有无穷大的表示形式。这是1.0/0.
Infinity
double d=1.0/0.0;
输出为算术异常
这两者有什么区别?
这里无限的含义是什么?第一种情况被视为双精度上的除法,第二种情况被视为int上的除法,因此是ArthimeticeException 这就是无限的含义
double和float的除法符合浮点匹配的标准,不应引发异常。从数学上讲,零除法是未定义的,尽管它可以粗略地视为无穷大。(稍微严格一点,对于x的任何值,它都大于x。) IEEE754浮点双精度(Java使用)具有无穷大的表示形式。这是1.0/0.0的结果。从这个意义上讲,1.0/0.0是可计算的,因为它发生在浮点运算中
整数类型没有无穷大的表示形式,因此会引发异常
1/0
是用整数算术计算的。浮点数有一种编码“无穷大”的方法。所以无穷大是双变量的有效值。整数变量没有此选项。所以会抛出一个异常。好的,但我是如何实现用双精度除零的?问题似乎是“为什么用双精度除零不会抛出算术异常,而用整数除零会抛出算术异常?”。补充这个答案。查看本教程中有关数据表示的内容,该教程非常具有说明性:
double d=1/0;