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. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x