Функция Python round () с ПРИМЕРАМИ

Содержание:

Anonim

Круглый()

Round () - встроенная функция, доступная в Python. Он вернет вам число с плавающей запятой, которое будет округлено до десятичных знаков, указанных в качестве входных данных.

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

В этом руководстве по Python вы узнаете:

  • Круглый()
  • Синтаксис:
  • Какое влияние может иметь округление? (Округление против усечения)
  • Пример: округление чисел с плавающей запятой
  • Пример: округление целых значений
  • Пример: округление отрицательных чисел
  • Пример: круглые массивы с числами
  • Пример: десятичный модуль

Синтаксис:

round(float_num, num_of_decimals)

Параметры

  • float_num: число с плавающей запятой, которое нужно округлить.
  • num_of_decimals: (необязательно) количество десятичных знаков, которые следует учитывать при округлении. Это необязательно, и если не указано, по умолчанию используется значение 0, а округление выполняется до ближайшего целого числа.

Описание

Метод round () принимает два аргумента

  • число, которое нужно округлить, и
  • десятичные разряды, которые следует учитывать при округлении.

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

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

Если число после десятичного разряда дано

  • > = 5, чем +1, будет добавлено к окончательному значению
  • <5, чем окончательное значение будет возвращено, поскольку оно до упомянутых десятичных знаков.

Возвращаемое значение

Он вернет целочисленное значение, если num_of_decimals не задано, и значение с плавающей запятой, если задано num_of_decimals. Обратите внимание, что значение будет округлено до +1, если значение после десятичной точки> = 5, в противном случае будет возвращено значение с точностью до упомянутых десятичных знаков.

Какое влияние может иметь округление? (Округление против усечения)

Лучший пример, показывающий влияние округления, - это фондовый рынок. В прошлом, то есть в 1982 году, Ванкуверская фондовая биржа (VSE): использовалась для усечения стоимости акций до трех знаков после запятой в каждой сделке.

Это делалось почти 3000 раз каждый день. Накопленные усечения приводят к потере около 25 баллов в месяц.

Пример усечения значений по сравнению с округлением показан ниже.

Считайте числа с плавающей запятой, сгенерированные ниже, как значения запасов. Сейчас я создаю его для ряда

1000000 секунд между 0,01 и 0,05.

Примеры:

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]

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

У меня есть исходное общее значение, сумма, полученная из усеченных значений, и разница между исходным и усеченным значением.

На том же наборе чисел я использовал метод round () до 3 знаков после запятой и вычислял сумму и разницу между исходным значением и округленным значением.

Вот пример и результат

Пример 1

import randomdef truncate(num):return int(num * 1000) / 1000arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]sum_num = 0sum_truncate = 0for i in arr:sum_num = sum_num + isum_truncate = truncate(sum_truncate + i)print("Testing by using truncating upto 3 decimal places")print("The original sum is = ", sum_num)print("The total using truncate = ", sum_truncate)print("The difference from original - truncate = ", sum_num - sum_truncate)print("\n\n")print("Testing by using round() upto 3 decimal places")sum_num1 = 0sum_truncate1 = 0for i in arr:sum_num1 = sum_num1 + isum_truncate1 = round(sum_truncate1 + i, 3)print("The original sum is =", sum_num1)print("The total using round = ", sum_truncate1)print("The difference from original - round =", sum_num1 - sum_truncate1)

Выход:

Testing by using truncating upto 3 decimal placesThe original sum is = 29985.958619386867The total using truncate = 29486.057The difference from original - truncate = 499.9016193868665Testing by using round() up to 3 decimal placesThe original sum is = 29985.958619386867The total using round = 29985.912The difference from original - round = 0.04661938686695066

Разница между исходным и после усечения составляет 499,9016193868665, а от округления - 0,04661938686695066.

Разница кажется очень большой, и пример показывает, как метод round () помогает в вычислениях, близких к точности.

Пример: округление чисел с плавающей запятой

В этой программе мы увидим, как округление слов на плавающих числах

# testing round()float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5print("The rounded value without num_of_decimals is :", round(float_num1))print("The rounded value without num_of_decimals is :", round(float_num2))print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2))print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))

Выход:

The rounded value without num_of_decimals is : 11The rounded value without num_of_decimals is : 10The rounded value with num_of_decimals as 2 is : 10.35The rounded value with num_of_decimals as 2 is : 10.34

Пример: округление целых значений

Если вы используете round () для целочисленного значения, он просто вернет вам это число без каких-либо изменений.

# testing round() on a integernum = 15print("The output is", round(num))

Выход:

The output is 15

Пример: округление отрицательных чисел

Давайте посмотрим на несколько примеров того, как округление работает с отрицательными числами.

# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))

Выход:

C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2

Пример: круглые массивы с числами

Как округлить массивы numpy в Python?

Чтобы решить эту проблему, мы можем использовать модуль numpy и использовать метод numpy.round () или numpy.around (), как показано в примере ниже.

Использование numpy.round ()

# testing round()import numpy as nparr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]arr1 = np.round(arr, 2)print(arr1)

Выход:

C:\pythontest>python testround.py[-0.34 1.46 4.23 -0.34 7.63 5.12]

Мы также можем использовать numpy.around (), который дает тот же результат, что и в примере ниже.

Пример: десятичный модуль

В дополнение к функции round () в python есть модуль decimal, который помогает более точно обрабатывать десятичные числа.

Модуль Decimal имеет типы округления, как показано ниже:

  • ROUND_CEILING: он будет округляться до бесконечности,
  • ROUND_DOWN: округляет значение до нуля,
  • ROUND_FLOOR: округляется в сторону -Бесконечность,
  • ROUND_HALF_DOWN: округляется до ближайшего значения, приближающегося к нулю,
  • ROUND_HALF_EVEN: округляется до ближайшего со значением, идущим до ближайшего четного целого числа,
  • ROUND_HALF_UP: округляется до ближайшего со значением, уходящим от нуля
  • ROUND_UP: округляется там, где значение уходит от нуля.

В десятичной системе счисления метод quantize () помогает округлить до фиксированного числа десятичных знаков, и вы можете указать используемое округление, как показано в примере ниже.

Пример:

Использование методов round () и decimal

import decimalround_num = 15.456final_val = round(round_num, 2)#Using decimal modulefinal_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING)final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN)final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR)final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN)final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN)final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP)print("Using round()", final_val)print("Using Decimal - ROUND_CEILING ",final_val1)print("Using Decimal - ROUND_DOWN ",final_val2)print("Using Decimal - ROUND_FLOOR ",final_val3)print("Using Decimal - ROUND_HALF_DOWN ",final_val4)print("Using Decimal - ROUND_HALF_EVEN ",final_val5)print("Using Decimal - ROUND_HALF_UP ",final_val6)print("Using Decimal - ROUND_UP ",final_val7)

Выход:

Using round() 15.46Using Decimal - ROUND_CEILING 15.46Using Decimal - ROUND_DOWN 15.45Using Decimal - ROUND_FLOOR 15.45Using Decimal - ROUND_HALF_DOWN 15.46Using Decimal - ROUND_HALF_EVEN 15.46Using Decimal - ROUND_HALF_UP 15.46Using Decimal - ROUND_UP 15.46

Резюме:

  • Round (float_num, Num_of_decimals) - встроенная функция, доступная в python. Он вернет вам число с плавающей запятой, которое будет округлено до десятичных знаков, указанных в качестве входных данных.
  • float_num: число с плавающей запятой, которое нужно округлить.
  • Num_of_decimals: это количество десятичных знаков, учитываемых при округлении.
  • Он вернет целочисленное значение, если num_of_decimals не задано, и значение с плавающей запятой, если задано num_of_decimals.