Python
Round в Python: как округлять числа до целого, сотых и нужного количества знаков
round() — встроенная функция Python для округления чисел. Если передать только число, Python округлит его до ближайшего целого, а если передать второй аргумент, можно указать количество знаков после запятой
print(round(3.14159))
print(round(3.14159, 2))
Вывод
3
3.14
В реальных задачах round() часто нужен для цен, процентов, средних значений, отчетов и вывода результата пользователю. Но важно понимать: округление для показа и точные денежные расчеты — не всегда одно и то же
Как округлить до целого
value = 12.7
result = round(value)
print(result)
Вывод
13
Если число ближе к меньшему целому, результат будет меньше
print(round(12.2))
Вывод
12
Такой вариант подходит, когда вам нужен именно целый результат: количество штук, приблизительная оценка, округленная статистика
Как округлить до сотых
Сотые — это два знака после запятой. Для этого вторым аргументом передают 2
price = 19.987
print(round(price, 2))
Вывод
19.99
До десятых — 1, до тысячных — 3
number = 3.14159
print(round(number, 1))
print(round(number, 2))
print(round(number, 3))
Вывод
3.1
3.14
3.142
Почему round(2.5) дает 2
В Python может удивить такой пример
print(round(2.5))
print(round(3.5))
Вывод
2
4
Это не ошибка. Python использует округление к ближайшему четному, когда число находится ровно посередине между двумя вариантами. Поэтому 2.5 идет к 2, а 3.5 — к 4. Такое поведение снижает статистическое смещение при большом количестве округлений, но для новичка выглядит непривычно
Если вам нужно другое правило округления, например всегда «половину вверх», стоит смотреть в сторону модуля decimal, особенно для финансовых расчетов
Почему с float бывают странности
Дробные числа в компьютере хранятся не всегда идеально. Поэтому иногда результат выглядит неожиданно
print(round(2.675, 2))
Может получиться
2.67
Причина не в том, что Python «плохо округляет», а в том, что число 2.675 внутри компьютера хранится как близкое двоичное приближение. Для обычных учебных задач это можно принять, а для денег лучше использовать decimal.Decimal
Как красиво вывести число с двумя знаками
Если нужно не математически округлить значение для дальнейших расчетов, а красиво показать его пользователю, часто удобнее форматирование строки
price = 19.9
print(f"{price:.2f}")
Вывод
19.90
Разница важная: round(19.9, 2) вернет число 19.9, а форматирование покажет строку 19.90. Для чеков, таблиц и интерфейса это часто именно то, что нужно
Округление вниз и вверх
round() округляет к ближайшему значению. Если нужно всегда вниз или всегда вверх, используйте math.floor() и math.ceil()
import math
print(math.floor(3.9))
print(math.ceil(3.1))
Вывод
3
4
floor() всегда идет вниз, ceil() всегда идет вверх. Это отдельные инструменты, их не стоит путать с обычным округлением
Мини-задача
Пусть пользователь вводит стоимость товара и процент скидки. Нужно вывести итоговую цену с двумя знаками после запятой
price = float(input("Цена: "))
discount = float(input("Скидка в процентах: "))
final_price = price - price * discount / 100
print("Итог:", round(final_price, 2))
print(f"Итог для чека: {final_price:.2f}")
Так вы увидите разницу между числом после round() и красивым текстовым выводом через форматирование
Частые ошибки
Ожидал 10.00, получил 10.0
round() возвращает число, а не строку для красивого вывода. Если нужны два знака после запятой, используйте форматирование
print(f"{value:.2f}")
Округление .5 работает не так, как в школе
Python округляет ровную половину к ближайшему четному. Это нормальное поведение встроенной функции round()
Использую round() для денег и получаю странности
Для простого учебного калькулятора это допустимо, но для реальных финансовых расчетов лучше использовать decimal.Decimal и явно выбранное правило округления
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как округлить число в Питоне до целого: round, int, floor и ceil
- Как округлить число до сотых в Python: round, форматирование и Decimal
- Как обозначить модуль числа в Python: abs() и math.fabs()
- Как сложить числа в списке Python: sum, цикл и проверка типов