Как работает функция round в Python?
Функция Python round() очень полезна, когда мы хотим выполнить операцию округления.
Часто требуется быстро оценить значение, округлив или уменьшив длинные десятичные дроби с плавающей запятой. round() особенно полезен в этом случае.
Синтаксис функции Python round()
Функция очень простая. Он берет число и выводит желаемое округленное число.
Здесь нам нужно округлить num , поэтому мы передаем его в round() . Мы также можем указать точность округления с помощью ndigits . Это гарантирует, что число будет округлено с точностью до ndigits после десятичной точки.
Если вы хотите округлить его до целых значений, вам не нужно указывать это значение. В этом случае будет возвращено ближайшее целочисленное значение.
Кроме того, если число имеет форму x.5 , значения будут округлены в большую сторону, если округленное значение является четным числом. В противном случае оно будет округлено в меньшую сторону.
Например, 2,5 будет округлено до 2, поскольку 2 — ближайшее четное число, а 3,5 будет округлено до 4.
После этого давайте рассмотрим несколько примеров:
1 Целочисленное округление
В приведенном ниже фрагменте показано, как можно округлять числа до ближайшего целого.
2 Округление в четную сторону
Как упоминалось ранее, если и четная, и нечетная стороны одинаково близки к числу ( x.5 ), то округление произойдет с четной стороной.
3 Округление с помощью ndigit = None.
Если аргумент ndigit не указан (или None ), будет выполнено округление до ближайшего целого числа.
4 Округление с ndigit <0
Мы также можем передать отрицательное значение аргументу ndigit . Округление начнется слева от десятичной точки!
Итак, если у нашего исходного числа 3 цифры после десятичной точки, передача ndigit = -3 удалит эти 3 цифры перед десятичной точкой и заменит их на 0, что даст нам 0!
Аномалии при округлении чисел с плавающей запятой
Поскольку числа с плавающей запятой определяются их точностью, Python приближает эти числа во время вычислений. Из-за этих приближений их округление может иногда давать неожиданные результаты.
Рассмотрим блок ниже, результаты которого могут быть неожиданными:
Давайте посмотрим еще на несколько примеров:
Опять же, из-за приближения к плавающей запятой мы не получаем точного результата. В первом случае мы ожидали 21.58 , но получили только 21.57 .
Из-за этого всегда будьте осторожны при работе с числами с плавающей запятой, так как эти небольшие изменения вывода могут создать огромные проблемы.
Использование round() для настраиваемых объектов
Метод Python round() внутренне вызывает метод __round__() .
Мы можем переопределить этот метод, если создаем собственный класс. Следовательно, любой вызов round() для нашего объекта вместо этого перейдет к этому переопределяющему методу.
Как видите, мы смогли реализовать нашу собственную функцию округления для объекта MyClass .