Числа: int и float, арифметика

Числа: int и float, арифметика

В прошлом уроке вы узнали, как хранить данные в переменных. Теперь разберёмся с числами — одним из самых фундаментальных типов данных в любом языке программирования. В Python числа бывают двух основных видов: целые (int) и дробные (float).

Целые числа: int

Целые числа (int, от integer) — это числа без дробной части: 0, 5, -42, 1_000_000. В Python целые числа могут быть сколь угодно большими — ограничений по размеру нет (в отличие от большинства других языков, где есть границы вроде ±2 147 483 647).

year = 2025
temperature = -15
big_number = 999_999_999_999  # миллиард - без ограничений

print(type(year))   # <class 'int'>

Дробные числа: float

Числа с дробной частью называются float (от floating point — «плавающая точка»). Для разделения целой и дробной части используется точка, не запятая:

pi = 3.14159
price = 99.99
negative = -0.001

print(type(pi))     # <class 'float'>

Обратите внимание: 1.0 — это float, а 1 — это int, даже несмотря на то что математически это одно число. Тип определяется наличием точки.

Для очень больших или очень маленьких чисел Python использует научную нотацию:

avogadro = 6.022e23     # 6.022 × 10^23
electron = 9.11e-31     # 9.11 × 10^-31
print(avogadro)         # 6.022e+23

Арифметические операторы

Python поддерживает все стандартные арифметические операции. Вот полный список:

ОператорОперацияПримерРезультат
+сложение3 + 25
-вычитание10 - 46
*умножение3 * 412
/деление7 / 23.5
//целочисленное деление7 // 23
%остаток от деления7 % 21
**возведение в степень2 ** 101024

Важный момент: оператор / в Python всегда возвращает float, даже если оба числа целые и результат целый:

print(10 / 2)   # 5.0  (не 5!)
print(7 / 2)    # 3.5

print(10 // 2)  # 5    (int — целочисленное деление)
print(7 // 2)   # 3    (дробная часть отбрасывается)
print(7 % 2)    # 1    (остаток)

Операторы // и % очень полезны на практике. Например, % позволяет проверить чётность числа: если n % 2 == 0 — число чётное.

Приоритет операций

Python вычисляет выражения по тем же правилам, что и математика: сначала возведение в степень, потом умножение и деление, потом сложение и вычитание. Операции одного приоритета выполняются слева направо.

result = 2 + 3 * 4      # 14, не 20: сначала 3*4=12, потом 2+12
result2 = (2 + 3) * 4   # 20: скобки повышают приоритет
result3 = 2 ** 3 ** 2   # 512: ** правоассоциативен, 3**2=9, 2**9=512

Когда сомневаетесь — ставьте скобки. Это не только убирает неоднозначность, но и делает код понятнее.

Смешивание int и float

Когда в выражении участвуют int и float, результат всегда будет float. Python «продвигает» тип к более общему:

print(3 + 1.5)    # 4.5 (float)
print(10 * 2.0)   # 20.0 (float)
print(5 - 5.0)    # 0.0 (float, несмотря на нулевой результат)

Это называется неявным приведением типов (implicit type coercion). Вы не просите Python переконвертировать — он делает это автоматически, чтобы не потерять дробную часть.

Встроенные функции для чисел

Python предоставляет несколько полезных встроенных функций для работы с числами:

print(abs(-42))        # 42 — модуль числа
print(round(3.7))      # 4 — округление до ближайшего целого
print(round(3.14159, 2))  # 3.14 — округление до N знаков после точки
print(max(1, 5, 3))    # 5 — максимум из аргументов
print(min(1, 5, 3))    # 1 — минимум из аргументов

round() в Python использует «банковское округление»: при точной середине (.5) округление идёт к ближайшему чётному числу. Поэтому round(0.5) = 0, а round(1.5) = 2. Это может удивить, но это соответствует стандарту IEEE 754.

Ограничения float: проблема точности

Дробные числа хранятся в памяти в двоичном виде. Многие десятичные дроби не имеют точного двоичного представления — отсюда небольшие погрешности:

print(0.1 + 0.2)   # 0.30000000000000004, не 0.3!
print(0.1 + 0.2 == 0.3)  # False

Это не баг Python — это особенность хранения чисел с плавающей точкой во всех языках. На практике для финансовых расчётов используют модуль decimal из стандартной библиотеки (мы познакомимся с импортом модулей позже). Для большинства задач (науки, игры, обработка данных) погрешность несущественна.

Полезные выражения

Рассмотрим несколько типичных задач с числами:

total = 1500
discount = 0.1
final_price = total * (1 - discount)   # 1350.0

minutes = 135
hours = minutes // 60    # 2
remaining = minutes % 60  # 15
print(f"Это {hours} ч {remaining} мин")

Проверь себя

Что выведет следующий код?

x = 17
print(x // 5)
print(x % 5)

17 // 5 — это 3 (целочисленное деление, 5 входит в 17 три раза), а 17 % 5 — это 2 (остаток: 17 - 15 = 2).

Итог

  • int — целые числа без ограничения по размеру; float — числа с дробной частью.
  • Наличие точки в записи числа определяет тип: 1int, 1.0float.
  • Оператор / всегда возвращает float; // — целочисленное деление; % — остаток.
  • При смешивании int и float результат всегда float.
  • round(), abs(), min(), max() — полезные встроенные функции для чисел.
  • Дробные числа имеют ограниченную точность: 0.1 + 0.2 ≠ 0.3 в точности.

В следующем уроке переходим к строкам — ещё одному ключевому типу данных Python — и познакомимся с удобным способом форматирования текста через f-строки.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике