Python Numbers

Python provides three numeric types, integers, floats, and complex numbers, and switches between them automatically when needed.

#Jobseeker

Find matching jobs & Auto apply with AI

Hyring
Jobseeker using Hyring to search, apply, and prepare with AI

Three numeric types

Whole numbers are integers of type int, numbers with a decimal point are floats of type float, and numbers with an imaginary part are of type complex. Python decides the type from how you write the literal, so 7 is an int while 7.0 is a float even though they represent the same quantity.

The numeric types

a = 15          # int
b = 4.5         # float
c = 2 + 3j      # complex

print(type(a))  # <class 'int'>
print(type(b))  # <class 'float'>
print(type(c))  # <class 'complex'>
TypeDescriptionExample
intWhole numbers of unlimited size, positive or negative0, 42, -1000000
floatNumbers with a decimal point or an exponent3.14, -0.5, 2e3
complexNumbers with a real and an imaginary part written with j3j, 2 + 3j
Note: Python integers have no fixed maximum. They grow to whatever size your memory allows, so calculations like 2 ** 200 give an exact result rather than overflowing.

Automatic conversion in arithmetic

When you combine an int and a float in the same expression, Python promotes the result to a float so that no precision is lost. The true division operator, a single slash, always returns a float even when both operands are integers.

Mixing ints and floats

total = 10 + 2.5      # int + float -> float
print(total)          # 12.5

print(9 / 3)          # 3.0, division always gives a float
print(9 // 3)         # 3, floor division keeps it an int

Writing numbers clearly

  • Use underscores as digit separators for readability, for example 1_000_000.
  • Write very large or very small floats with scientific notation, such as 1.5e6.
  • Floats are stored in binary and can carry tiny rounding errors, so 0.1 + 0.2 is not exactly 0.3.
  • Convert between types explicitly with int(), float(), and complex() when you need to.

Readable literals and float precision

big = 1_000_000
print(big)               # 1000000

print(0.1 + 0.2)         # 0.30000000000000004
print(round(0.1 + 0.2, 2))  # 0.3

Exercise: Python Numbers

Which built-in numeric type represents whole numbers in Python?