Как работает функция round в Python
Как работает функция 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 .