Python функція round() із ПРИКЛАДАМИ

круглий()

Round() — це вбудована функція, доступна в Python. Він поверне вам число з плаваючою точкою, яке буде округлено до десяткових знаків, які надаються як вхідні дані.

Якщо десяткові знаки, які потрібно округлити, не вказано, це вважається 0, і воно округлиться до найближчого цілого числа.

синтаксис

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 балів на місяць.

Нижче наведено приклад скорочення значень у порівнянні з округленням.

Розглянемо числа з плаваючою комою, згенеровані нижче, як фондові значення. Зараз я створюю його для ряду

1,000,000 0.01 0.05 секунд між XNUMX і XNUMX.

Приклади:

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, а з округленням – 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(), який дає такий самий результат, як показано в прикладі нижче.

Приклад: десятковий модуль

На додаток до функції round(), python має десятковий модуль, який допомагає точніше обробляти десяткові числа.

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

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

У десятковій системі метод 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

Підсумки

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