Python
Как убрать дробную часть в Python: int, math.trunc, floor и ceil
Чтобы убрать дробную часть числа в Python, чаще всего используют int(number) или math.trunc(number). Эти способы не округляют число, а отбрасывают дробную часть в сторону нуля
Например, int(12.9) даст 12, а int(-12.9) даст -12. Это важное отличие от округления вниз, где отрицательное число может вести себя иначе
Самый простой способ: int()
number = 12.75
result = int(number)
print(result)
Результат
12
int() превращает число с плавающей точкой в целое и просто убирает дробную часть
Еще пример
print(int(3.14))
print(int(9.99))
print(int(100.01))
Результат
3
9
100
Если задача звучит именно как «убрать дробную часть», int() обычно самый понятный вариант
Важный момент с отрицательными числами
С отрицательными числами int() работает в сторону нуля
print(int(5.9))
print(int(-5.9))
Результат
5
-5
Это не то же самое, что «округлить вниз». Для отрицательного числа округление вниз даст -6, потому что -6 меньше, чем -5.9
math.trunc(): явное отсечение дробной части
В модуле math есть функция trunc(). Она делает почти то же самое: отсекает дробную часть в сторону нуля
import math
print(math.trunc(12.75))
print(math.trunc(-12.75))
Результат
12
-12
math.trunc() хорошо читается, когда вы хотите явно показать смысл операции: не округляем, а именно отбрасываем дробную часть
math.floor(): округление вниз
math.floor() не просто убирает дробную часть. Он возвращает ближайшее целое число, которое меньше или равно исходному
import math
print(math.floor(12.75))
print(math.floor(-12.75))
Результат
12
-13
Для положительных чисел int() и floor() часто дают одинаковый результат. Для отрицательных — нет
math.ceil(): округление вверх
math.ceil() возвращает ближайшее целое число, которое больше или равно исходному
import math
print(math.ceil(12.1))
print(math.ceil(-12.1))
Результат
13
-12
Эта функция не подходит для задачи «убрать дробную часть», но ее важно знать, чтобы не путать разные операции
Таблица различий
12.75 |
12 |
12 |
12 |
13 |
|---|---|---|---|---|
12.01 |
12 |
12 |
12 |
13 |
-12.75 |
-12 |
-12 |
-13 |
-12 |
-12.01 |
-12 |
-12 |
-13 |
-12 |
Если число может быть отрицательным, обязательно уточните, что именно вам нужно: отбросить дробную часть или округлить вниз
Почему round() не подходит для этой задачи
round() округляет число, а не просто убирает дробную часть
print(round(12.4))
print(round(12.6))
Результат
12
13
Если использовать round() там, где нужно отсечение, программа может дать неожиданный результат. Например, цена 99.99 после round() станет 100, а после int() станет 99
Форматирование тоже не меняет число
Иногда нужно не изменить число, а просто показать его без дробной части на экране. Тогда можно использовать форматирование
number = 12.75
print(f"{number:.0f}")
print(number)
Первый вывод покажет число без знаков после запятой, но сама переменная number останется числом 12.75
Это важное различие
int(number)меняет значение на целое числоf"{number:.0f}"делает строку для красивого вывода
Как убрать дробную часть у всех чисел в списке
Если есть список дробных чисел, используйте генератор списка
numbers = [10.5, 3.14, 8.99, -2.7]
integers = [int(number) for number in numbers]
print(integers)
Результат
[10, 3, 8, -2]
Если нужна функция math.floor(), схема такая же
import math
numbers = [10.5, 3.14, 8.99, -2.7]
integers = [math.floor(number) for number in numbers]
print(integers)
Результат для последнего числа будет другим, потому что math.floor(-2.7) даст -3
Как убрать дробную часть при делении
Обычное деление / в Python возвращает число с дробной частью
print(10 / 3)
Результат
3.3333333333333335
Если нужно целочисленное деление, можно использовать //
print(10 // 3)
Результат
3
Но с отрицательными числами // работает как округление вниз, а не как отсечение в сторону нуля
print(-10 // 3)
print(int(-10 / 3))
Результат
-4
-3
Поэтому // не всегда заменяет int()
Мини-практика
Запустите такой код и сравните результаты
import math
values = [7.9, 7.1, -7.1, -7.9]
for value in values:
print("Число:", value)
print("int:", int(value))
print("trunc:", math.trunc(value))
print("floor:", math.floor(value))
print("ceil:", math.ceil(value))
print()
После этого добавьте число 0.99 и -0.99. На них особенно хорошо видно, как отличаются отсечение и округление вниз
Частые ошибки
Использовать round вместо int
round() округляет, поэтому round(9.9) даст 10, а не 9
Не учитывать отрицательные числа
int(-5.9) даст -5, а math.floor(-5.9) даст -6. Если в задаче возможны отрицательные значения, это важно
Путать изменение значения и вывод
Форматирование через :.0f меняет только отображение, а не само число
Использовать // как универсальное отсечение
Оператор // удобен для целочисленного деления, но с отрицательными числами ведет себя как округление вниз
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как округлить число в Питоне до целого: round, int, floor и ceil
- Как сделать ИИ на Python: простой проект без магии
- Как сделать игру на Python: первая консольная игра «Угадай число»
- Как сделать калькулятор на Питоне: простой код для начинающих