Python Функція round() з ПРИКЛАДАМИ
⚡ Розумний підсумок
Python round() — це вбудована функція, яка повертає число з плаваючою комою або ціле число, округлене до заданої кількості знаків після коми, використовуючи банківське округлення для розриву зв'язків до найближчої парної цифри.

Що таке функція round() у Python?
Python round() — це вбудована функція, доступна з PythonВін поверне вам число з плаваючою комою, округлене до знаків після коми, заданих на вхідних даних.
Якщо десяткові знаки, які потрібно округлити, не вказано, це вважається 0, і воно округлиться до найближчого цілого числа.
синтаксис
round(float_num, num_of_decimals)
Параметри
- номер_числа_з_float: Число з плаваючою комою, яке потрібно округлити.
- кількість_десяткових_значень: (необов'язково) Кількість знаків після коми, яку потрібно враховувати під час округлення. Це необов'язково, і якщо не вказано, значення за замовчуванням дорівнює 0, а округлення виконується до найближчого цілого числа.
Опис
Метод round() приймає два аргументи:
- число, яке потрібно округлити, та
- десяткові знаки, які слід враховувати під час округлення.
Другий аргумент є необов'язковим і за замовчуванням дорівнює 0, якщо його не вказано, і в такому випадку він буде округлений до найближчого цілого числа, а тип повернення також буде цілим числом.
Коли присутні десяткові знаки, тобто другий аргумент, він округлить до заданої кількості знаків. Повернутим типом буде float.
Якщо число після десяткової коми таке:
- >= 5, тоді до кінцевого значення буде додано +1.
- < 5, тоді кінцеве значення буде повернуто таким, яким воно є, аж до зазначених знаків після коми.
Повернене значення
Якщо значення num_of_decimals не вказано, воно поверне ціле значення, а значення з плаваючою комою — значення, якщо значення num_of_decimals вказано. Зверніть увагу, що значення буде округлено до +1, якщо значення після десяткової коми перевищує 5, інакше воно поверне значення без змін, аж до зазначених знаків після коми.
Який вплив може мати округлення? (Округлення проти скорочення)
Найкращим прикладом впливу округлення є фондовий ринок. У минулому, тобто у 1982 році, Ванкуверська фондова біржа (VSE) використовується для скорочення вартості акцій до трьох знаків після коми в кожній угоді.
Це робилося майже 3000 разів щодня. Накопичені скорочення призвели до втрати близько 25 балів на місяць.
Нижче наведено приклад скорочення значень у порівнянні з округленням.
Розглянемо згенеровані нижче числа з плаваючою комою як значення акцій. Зараз я генерую їх протягом діапазону 1 000 000 секунд між 0.01 та 0.05.
Приклади:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Щоб показати вплив округлення, я написав невеликий фрагмент коду, в якому спочатку ви використовуєте числа лише до 3 знаків після коми, тобто скорочуєте число після 3 знаків після коми.
У мене є початкове загальне значення, загальне значення, отримане з усічених значень, і різниця між початковим та усіченим значенням.
На тому ж наборі чисел я використав метод round() до 3 знаків після коми та обчислив суму та різницю між початковим значенням та округленим значенням.
Ось приклад і результат.
Приклад 1
import random def truncate(num): return int(num * 1000) / 1000 arr = [random.uniform(0.01, 0.05) for _ in range(1000000)] sum_num = 0 sum_truncate = 0 for i in arr: sum_num = sum_num + i sum_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 = 0 sum_truncate1 = 0 for i in arr: sum_num1 = sum_num1 + i sum_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 places The original sum is = 29985.958619386867 The total using truncate = 29486.057 The difference from original - truncate = 499.9016193868665 Testing by using round() up to 3 decimal places The original sum is = 29985.958619386867 The total using round = 29985.912 The difference from original - round = 0.04661938686695066
Різниця між початковим та усіченим значенням становить 499.9016193868665, а з round() — 0.04661938686695066.
Різниця здається дуже великою, і приклад показує, як метод round() допомагає в обчисленнях з майже точною точністю.
Приклад: Rounding Float Numbers
У цій програмі ми побачимо, як працює округлення чисел з плаваючою комою.
# 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 >5 float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5 float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5 float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5 print("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 : 11 The rounded value without num_of_decimals is : 10 The rounded value with num_of_decimals as 2 is : 10.35 The rounded value with num_of_decimals as 2 is : 10.34
Приклад: округлення цілих значень
Якщо ви використовуєте round() для цілого значення, це просто поверне вам число без будь-яких змін.
# testing round() on a integer num = 15 print("The output is", round(num))
вихід:
The output is 15
Приклад: округлення до від’ємного Numbers
Давайте розглянемо кілька прикладів того, як працює округлення від'ємних чисел.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
вихід:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Приклад: Округлі масиви NumPy
Як округлити NumPy масиви в Python?
Щоб вирішити цю проблему, ми можемо скористатися модулем NumPy та застосувати метод numpy.round() або numpy.around(), як показано в прикладі нижче.
Використання numpy.round()
# testing round() import numpy as np arr = [-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(), що дасть той самий результат, що й numpy.round(), показаний вище.
Приклад: десятковий модуль
Окрім функції round(), Python має десятковий модуль, який допомагає точніше обробляти десяткові числа.
Модуль Decimal постачається з типами округлення, як показано нижче:
- КРУГЛА_СТЕЛЯ: воно заокруглиться до нескінченності.
- ОКРУГЛЕННЯ ВНИЗ: це округлить значення до нуля.
- КРУГЛИЙ_ПОВЕРХ: воно округлиться до -нескінченності.
- ОКРУГЛЕННЯ_НАПІВ_ВНИЗ: воно округлиться до найближчого значення, що прямує до нуля.
- РАУНД_НАПІВ_ПАРНОГО_РАУНДУ: воно округлиться до найближчого значення, що прямує до найближчого парного цілого числа.
- ОКРУГЛЕННЯ_НАПІВ_ВГОРУ: воно округлиться до найближчого значення, віддаляючись від нуля.
- ОКРУГЛЕННЯ: воно округлиться там, де значення відхилиться від нуля.
У десятковій системі метод quantize() допомагає округлити до фіксованої кількості знаків після коми, і ви можете вказати округлення, яке буде використовуватися, як показано в прикладі нижче.
приклад: Використання методів round() і decimal
import decimal round_num = 15.456 final_val = round(round_num, 2) #Using decimal module final_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.46 Using Decimal - ROUND_CEILING 15.46 Using Decimal - ROUND_DOWN 15.45 Using Decimal - ROUND_FLOOR 15.45 Using Decimal - ROUND_HALF_DOWN 15.46 Using Decimal - ROUND_HALF_EVEN 15.46 Using Decimal - ROUND_HALF_UP 15.46 Using Decimal - ROUND_UP 15.46
