bla*_*man 8

简而言之:浮点数可以表示无穷大(甚至是产生非数字值的运算),因此导致此结果的操作(例如,除以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中的内容.