Рубрики
Без рубрики

Использование Python Round ()

Функция Python Rounl () очень полезна, когда мы хотим выполнить операцию округления.

Автор оригинала: Pankaj Kumar.

Использование Python Round ()

Python раунд () Функция очень полезна, когда мы хотим выполнить операцию округления.

Часто вы захотете быстро оценить ценность, закругление или уменьшающие длительные дебилицы с плавающей точкой. раунд () особенно выгодно в этом случае.

Давайте посмотрим, как мы можем использовать его вместе с некоторыми примерами!

Синтаксис функции Python Rounl ()

Функция очень проста. Требуется номер и выводит желаемое закругленное число.

round(num, [ndigits])

Здесь нам нужно раунд Num Итак, мы передаем это на раунд () Отказ Мы также можем указать точность округления, используя ndigits Отказ Это гарантирует, что номер будет округлен до ndigits точность после десятичной точки.

Если вы хотите включить его в целочисленные значения, вам не нужно предоставлять это значение. В этом случае ближайшее целочисленное значение будет возвращено.

Кроме того, если номер имеет форму X.5 Затем значения будут округлены, если значение раунда является четным числом. В противном случае он будет округлен.

Например, 2,5 будут округлены до 2, так как 2 – ближайший четный номер, а 3.5 будет округлен до 4.

С этим покрытым, давайте посмотрим на некоторые примеры:

Примеры питона раунда ()

Есть некоторые случаи, чтобы рассмотреть, поэтому давайте пойдем об этом один за другим.

1. целочисленное округление

Приведенный ниже фрагмент показывает, как мы можем круглые числа до ближайшего целого числа.

print(round(5, 2)) # Round 5 upto 2 decimal places. But 5 is already an integer!
print(round(6.4))
print(round(7.7))
print(round(3.5))

Выход

5
6
8
4

2. Округление до даже стороны

Как упоминалось ранее, если и четные, так и странные стороны одинаково близки к числу ( X.5 ), то округление произойдет с честью.

print(round(10.5))
print(round(11.5))

Выход

10
12

3. округление с

Если ndigit Аргумент не указан (или None ), округление произойдет с ближайшим целым числом.

print(round(2.5)) # Rounding will happen to the nearest even number
# OR
print(round(2.5, None))

Выход

2
2

4. Округление с NDIGIT <0

Мы также можем передавать отрицательное значение для ndigit аргумент Это начнет округление слева от десятичной точки!

Итак, если наш оригинальный номер имеет 3 цифры после десятичной точки, проезжая ndigit = -3 Удалю эти 3 цифры перед десятичной точкой и замените тогда 0, давая нам 0!

print(round(123.456, 0))
print(round(123.456, -1))
print(round(123.456, -2))
print(round(123.456, -3))

Выход

123
120.0
100.0
0.0

Аномалии на округление с плавающими точками

Поскольку количество плавающих точек определяется их точностью, Python приближается к этим числам во время расчетов. Из-за этих приближений округление их иногда может дать нам неожиданные результаты.

Рассмотрим следующий блок, где результаты могут быть удивительными:

>>> 0.1 + 0.1 == 0.2
True
>>> 0.1 + 0.1 + 0.1 == 0.3
False
>>> 0.1 + 0.1 + 0.1 + 0.1 == 0.4
True

Давайте посмотрим на несколько примеров:

>>> print(round(21.575, 2))
21.57
>>> print(round(1.23546, 2))
1.24
>>> print(round(-1.2345, 2))
-1.23

Опять же, из-за приближения плавающей точки, мы не получаем точный выход. В первом случае мы бы ожидали 21,58 , но мы только получили 21,57 Отказ

Благодаря этому, всегда будьте осторожны при работе с плавающими точками, поскольку эти небольшие изменения в выходе могут дать вам огромные проблемы, владеющие линией.

Использование Python Round () на пользовательских объектах

Python раунд () Метод внутренне называет __round __ () метод дудин.

Мы можем переопределить этот метод, если мы создаем пользовательский Класс Отказ Поэтому любой звонок раунд () На нашем объекте вместо этого перейдет этот переопределенный метод.

Давайте посмотрим на создание нашего собственного пользовательского рода!

class MyClass:
    def __init__(self, data):
        assert type(data) == type([])
        self.data = data # Assume List type data of numbers
    def __round__(self, num_digits=None):
        for idx in range(len(self.data)):
            self.data[idx] = round(self.data[idx], num_digits)
        return self

my_obj = MyClass([12.34, 12.345, 10.5])
my_obj = round(my_obj)
print(my_obj.data)

Выход

[12, 12, 10]

Как вы можете видеть, мы смогли реализовать нашу собственную функцию округления для MyClass объект!

Заключение

В этой статье мы узнали об использовании раунд () Функция в Python, используя различные примеры.

использованная литература