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

That's because integers don't have values for +/-Inf, NaN, and don't allow division by 0, while floats do have those special values.


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.


1/0 is integer division, 1/0.0 is floating point division - Floats can represent invalid values, integers can't.

Tags:

Double

Java

Int