siv*_*636 2 java divide-by-zero arithmeticexception
可能重复:
为什么Java除以0.0时不会抛出异常?
为什么Java中的以下语句不会报告ArithmeticException?
double d = 1.0/0;
Run Code Online (Sandbox Code Playgroud)
简而言之:浮点数可以表示无穷大(甚至是产生非数字值的运算),因此导致此结果的操作(例如,除以0)是有效的.
扩展Mohammod Hossain的答案,以及这个问题及其接受的答案,抛出ArithmeticException"当出现异常算术条件时抛出".对于整数,除以0就是这种情况,但对于浮点数(floats和doubles),存在正和负表示.
举个例子,
public class DivZeroFun {
public static void main(String args[]) {
double f = 5.0;
System.out.println(f / 0);
double f2 = -5.0;
System.out.println(f2/0);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码将打印"Infinity",然后打印"-Infinity"作为其答案,因为"Infinity"实际上是用Java编码的floats和doubles 的可接受值.
另外,从这个论坛帖子:
浮点表示通常包括+ inf,-inf甚至"非数字".整数表示不.您所看到的行为并非Java独有,大多数编程语言都会做类似的事情,因为这就是浮点硬件(或低级库)正在做的事情.
再次从论坛帖子:
因为所使用的浮点数的IEEE标准定义了正无穷大和负无穷大的值,以及特殊的"非数字"情况.有关详细信息,请参阅java.lang.Float和java.lang.Double中的内容.
| 归档时间: |
|
| 查看次数: |
7306 次 |
| 最近记录: |