# [ACCEPTED]-Division by zero in Haskell-divide-by-zero

The reason that `div`

does not return `Infinity`

is simple--there 22 is no representation for infinity in the 21 `Integer`

type.

`/`

returns `Infinity`

because it follows the IEEE 20 754 standard (which describes floating point 19 number representations) since the default 18 `Fractional`

type is `Double`

. Other languages with floating 17 point numbers (e.g. JavaScript) also exhibit 16 this behavior.

To make mathematicians cringe 15 even more, you get a different result if 14 you divide by *negative* 0, despite the fact that 13 `-0 == 0`

for floats:

```
Prelude> 1/(-0)
-Infinity
```

This is also behavior from the 12 standard.

If you use a different fractional 11 type like `Rational`

, you will get the behavior you 10 expect:

```
Prelude> 1 / (0 :: Rational)
*** Exception: Ratio.%: zero denominator
```

Coincidentally, if you're wondering 9 about why `Integer`

and `Double`

are the types in question 8 when your actual operation does not reference 7 them, take a look at how Haskell handles 6 defaulting types (especially numeric types) in 5 the report.

The short version is that if you have 4 an ambiguous type from the `Num`

class, Haskell 3 will first try `Integer`

and then `Double`

for that type. You 2 can change this with a `default (Type1, Type2...)`

statement or turn 1 it off with a `default ()`

statement at the module level.

I hope this helps:

```
Prelude> 1/0
Infinity
Prelude> -1/0
-Infinity
Prelude> 0/0
NaN
```

0

It may not be that way for a mathematical 4 reason. `Infinity`

is used sometimes as a "sin bin": everything 3 that doesn't work in our system cleanly, put 2 it in there.

Example:

```
Prelude> 10 ** 10 ** 10
Infinity
```

... is definitely not 1 mathematically justified!

Fractional is *not* equal to Float (or Double) type.

Fraction 3 of 1/n where n goes to 0 so lim(n→0) 1/n 2 = +∞, lim(n→0) -1/n = -∞ and that makes 1 sense.

More Related questions

We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.