3 回答

TA贡献1876条经验 获得超6个赞
从数学上讲,除以零的结果是未定义的,可以用浮点数/双精度表示(NaN
不是数字),但在任何基本意义上都不是错误的。
由于整数必须包含特定的数值,因此在处理它们时必须将除以零的错误抛出。

TA贡献1824条经验 获得超5个赞
Java float和double类型,就像其他任何语言(以及几乎任何硬件FP单元)一样,实现了浮点数学的IEEE 754标准,它要求除以零以返回特殊的“无穷大”值。抛出异常实际上会违反该标准。
整数算术(由Java和大多数其他语言和硬件实现为二进制补码表示)是不同的,没有特殊的无穷大或NaN值,因此抛出异常是一种有用的行为。

TA贡献1853条经验 获得超6个赞
除以零(0或0.00)时
如果将double除以0,JVM将显示Infinity。
public static void main(String [] args){ double a=10.00; System.out.println(a/0); }
安慰: Infinity
如果将int除以0,则JVM将抛出算术异常。
public static void main(String [] args){
int a=10;
System.out.println(a/0);
}
安慰: Exception in thread "main" java.lang.ArithmeticException: / by zero
但是如果我们将int除以0.0,那么JVM将显示Infinity:
public static void main(String [] args){
int a=10;
System.out.println(a/0.0);
}
安慰: Infinity
这是因为JVM会自动将cast int类型化为double,因此我们得到无穷大而不是ArithmeticException。
添加回答
举报