Python
Как округлить число в Питоне до целого: round, int, floor и ceil
В Питоне есть несколько способов получить целое число из дробного, но они делают разные вещи. round() округляет, int() отбрасывает дробную часть, math.floor() округляет вниз, а math.ceil() округляет вверх
Если выбрать не ту команду, код может формально работать, но результат будет неправильным. Поэтому сначала нужно понять, какое именно округление вам нужно
Короткий ответ
Обычное округление до целого
number = 12.7
result = round(number)
print(result)
Результат
13
Еще пример
print(round(12.3))
print(round(12.7))
Результат
12
13
Чем round отличается от int
round() округляет число, а int() просто отбрасывает дробную часть
print(round(12.9))
print(int(12.9))
Результат
13
12
Если вы хотите именно округлить, используйте round(). Если хотите убрать дробную часть без округления, используйте int()
Округление вниз через math.floor
math.floor() всегда округляет вниз
import math
print(math.floor(12.1))
print(math.floor(12.9))
Результат
12
12
Это полезно, например, когда нужно посчитать полные блоки, страницы, этажи или целые единицы без превышения
Округление вверх через math.ceil
math.ceil() всегда округляет вверх
import math
print(math.ceil(12.1))
print(math.ceil(12.9))
Результат
13
13
Такой вариант нужен, когда даже маленький остаток требует еще одну единицу. Например, если в коробку помещается 10 товаров, а товаров 21, нужно 3 коробки, а не 2
import math
items = 21
box_size = 10
boxes = math.ceil(items / box_size)
print(boxes)
Результат
3
Важный нюанс round с половинами
В Python round() для значений ровно посередине может вести себя не так, как ожидает человек после школьного правила
print(round(2.5))
print(round(3.5))
Результат
2
4
Python использует банковское округление: половина округляется к ближайшему четному числу. Для обычных бытовых задач это редко мешает, но для финансовых расчетов нужно быть осторожнее и читать правила округления отдельно
Как округлить результат ввода
Если пользователь вводит число, input() возвращает строку. Сначала преобразуйте ввод в float, потом округляйте
text = input("Введите число: ")
number = float(text)
print(round(number))
Пример
Введите число: 7.8
8
Как округлить до целого и вывести без .0
Иногда после расчетов получается 13.0, а нужно вывести 13
number = 12.7
result = round(number)
print(result)
print(type(result))
Если round() вызван без второго аргумента, результат будет целым числом int
Мини-практика
Напишите программу, которая спрашивает у пользователя цену товара с копейками и выводит три результата: обычное округление, округление вниз и округление вверх
Проверьте на числах 99.1, 99.5, 99.9. Так вы быстро увидите, что round, floor и ceil решают разные задачи
Частые ошибки
Ошибка первая: использовать int() и думать, что это округление. int(9.9) даст 9, а не 10
Ошибка вторая: забыть импортировать math перед math.floor() и math.ceil()
Ошибка третья: не учитывать поведение round() на числах вроде 2.5
Ошибка четвертая: округлять слишком рано. В расчетах лучше считать точнее, а округлять только итоговый вывод
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как округлить число до сотых в Python: round, форматирование и Decimal
- Как убрать дробную часть в Python: int, math.trunc, floor и ceil
- round в Python: как округлять числа до целого, сотых и нужного количества знаков
- Python: с чего начать — путеводитель для новичков