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:
nanrepresenting a special "Not a Number" value.
-0.0representing "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