# float (IEEE 754)

Floating point numbers in Python and most of the modern languages are implemented according to IEEE 754. The most interesting and hardcore part is "arithmetic formats" which defines a few special values:

`inf`

and`-inf`

representing infinity.`nan`

representing a special "Not a Number" value.`-0.0`

representing "negative zero"

Negative zero is the easiest case, for all operations it considered to be the same as the positive zero:

```
-.0 == .0 # True
-.0 < .0 # False
```

Nan returns False for all comparison operations (except `!=`

) including comparison with inf:

```
import math
math.nan < 10 # False
math.nan > 10 # False
math.nan < math.inf # False
math.nan > math.inf # False
math.nan == math.nan # False
math.nan != 10 # True
```

And all binary operations on nan return nan:

```
math.nan + 10 # nan
1 / math.nan # nan
```

You can read more about nan in previous posts:

Infinity is bigger than anything else (except nan). However, unlike in pure math, infinity is equal to infinity:

```
10 < math.inf # True
math.inf == math.inf # True
```

The sum of positive and negative infinity is nan:

```
-math.inf + math.inf # nan
```