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

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

Настройки cookie

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