We've seen Python's three built-in numeric types: int
, float
, complex
, plus two more types—Fraction
and Decimal
—imported from the standard library. The numbers module in the standard library provides four base class definitions for the numeric types. We rarely need to use this module explicitly; it's a convention that we need when we have to implement our own numeric types.
The numeric types form a kind of "tower" that parallels the various kinds of numbers seen in conventional mathematics. The foundation of the tower is integers. Rational numbers are above integers. Floating-point values are still further up, and complex numbers are at the top of the tower.
A common expectation is that a language will automatically coerce numeric values to permit expressions such as 2*2.718
to work properly and produce a useful result. When multiplying an integer by a float value, we expect integers to be coerced to a floating-point value.
In order for this to work, there are two general...