Alex Rivera | Logout

Why does integer division by zero 1/0 give error but floating point 1/0.0 returns "Inf"?

Asked 2011-03-13T19:00:34.547
35

I'm just curious about this:

When evaluating 1/0 in Java, the following exception occurs:

Exception in thread "main" java.lang.ArithmeticException: / by zero at Foo.main(Foo.java:3)

But 1/0.0 is evaluated to Infinity.

public class Foo {
    public static void main (String[] args) {
        System.out.println(1/0.0);
    }
}

Why does this happen?

Edit
Report

1 Answer

14

1/0 is a division of two ints, and throws an exception because you can't divide by integer zero. However, 0.0 is a literal of type double, and Java will use a floating-point division. The IEEE floating-point specification has special values for dividing by zero (among other thing), one of these is double.Infinity.

If you're interested in details, the floating-point spec (which is often cryptic) has a page at Wikipedia: http://en.wikipedia.org/wiki/IEEE_754-2008, and its full text can be also read online: http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4610933.

answered 2011-03-13T19:05:25.590

Your Answer