在Java中将double除以零

时间:2012-07-25 04:13:24

标签: java divide-by-zero arithmeticexception

  

可能重复:
  Why doesn't Java throw an Exception when dividing by 0.0?

为什么Java中的以下语句不会报告ArithmeticException?

double d = 1.0/0;

1 个答案:

答案 0 :(得分:8)

简而言之:浮点数可以表示无穷大(甚至是产生非数字值的运算),因此导致此结果的操作(例如除以0)是有效的。

扩展Mohammod Hossain的答案,以及this question and its accepted answer,抛出ArithmeticException“当出现异常算术条件时抛出”。对于整数,除以0就是这种情况,但对于浮点数(float s和double s),存在正负表示。

举个例子,

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);
    }
}

此代码将打印“Infinity”,然后打印“-Infinity”作为答案,因为“Infinity”实际上是用Java编码的floatdouble的可接受值。< / p>

此外,来自this forum post

  

浮点表示通常包括+ inf,-inf甚至“不是a   数字“。整数表示没有。你所看到的行为不是   Java是独一无二的,大多数编程语言都会做类似的事情,   因为那就是浮点硬件(或低级库)   做。

再次来自论坛帖子:

  

因为所使用的浮点数的IEEE标准已经定义   正负无穷大的值,特殊的“不是   数字“case。查看java.lang.Float和java.lang.Double中的内容   详情。