Python Funkce round() s PŘÍKLADY
⚡ Chytré shrnutí
Python round() je vestavěná funkce, která vrací hodnotu s plovoucí desetinnou čárkou nebo celočíselnou hodnotu zaokrouhlenou na zadaný počet desetinných míst, přičemž k přerušení vazby směrem k nejbližší sudé číslici používá bankovní zaokrouhlení.

Co je funkce round() v Python?
Python round() je vestavěná funkce dostupná s PythonVrátí vám číslo s desetinnou čárkou, které bude zaokrouhleno na desetinná místa zadaná jako vstup.
Pokud nejsou zaokrouhlena desetinná místa, považuje se to za 0 a zaokrouhlí se na nejbližší celé číslo.
Syntax
round(float_num, num_of_decimals)
parametry
- číslo_s_floatem: Číslo s desetinnou čárkou, které se má zaokrouhlit.
- počet_desetinných_míst: (volitelné) Počet desetinných míst, která se mají zohlednit při zaokrouhlování. Je volitelný a pokud není zadán, je výchozí hodnota 0 a zaokrouhlení se provede na nejbližší celé číslo.
Description
Metoda round() přijímá dva argumenty:
- číslo, které má být zaokrouhleno, a
- desetinná místa, která by měla brát v úvahu při zaokrouhlování.
Druhý argument je volitelný a pokud není zadán, má výchozí hodnotu 0. V takovém případě se zaokrouhlí na nejbližší celé číslo a návratový typ bude také celé číslo.
Když jsou uvedena desetinná místa, tj. druhý argument, zaokrouhlí se na daný počet míst. Návratový typ bude plovoucí.
Pokud je číslo za desetinným místem zadané:
- >= 5, pak se k výsledné hodnotě přičte +1.
- < 5, pak bude konečná hodnota vrácena tak, jak je, s přesností na uvedená desetinná místa.
Návratová hodnota
Pokud není zadán počet desetinných míst, vrátí celočíselnou hodnotu, a pokud je zadán počet desetinných míst, vrátí hodnotu s desetinnou čárkou. Upozorňujeme, že hodnota bude zaokrouhlena na +1, pokud je hodnota za desetinnou čárkou >= 5, jinak vrátí hodnotu tak, jak je, až na uvedený počet desetinných míst.
Jak velký dopad může mít zaokrouhlení? (zaokrouhlení vs zkrácení)
Nejlepším příkladem, který ukazuje dopad zaokrouhlování, je burza cenných papírů. V minulosti, tj. v roce 1982, Vancouver Stock Exchange (VSE) používaná ke zkrácení hodnot akcií na tři desetinná místa v každém obchodu.
Dělalo se to téměř 3000krát denně. Nahromaděná zkrácení vedla ke ztrátě přibližně 25 bodů měsíčně.
Příklad zkrácení hodnot versus zaokrouhlení je uveden níže.
Představte si níže vygenerovaná čísla s plovoucí desetinnou čárkou jako hodnoty akcií. Momentálně je generuji pro rozsah 1 000 000 sekund mezi 0.01 a 0.05.
Příklady:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Abych ukázal dopad zaokrouhlování, napsal jsem krátký kousek kódu, ve kterém nejprve použijete čísla pouze do 3 desetinných míst, tj. oříznete číslo po 3 desetinných místech.
Mám původní celkovou hodnotu, součet zkrácených hodnot a rozdíl mezi původní a zkrácenou hodnotou.
Na stejné sadě čísel jsem použil metodu round() až na 3 desetinná místa a vypočítal součet a rozdíl mezi původní hodnotou a zaokrouhlenou hodnotou.
Zde je příklad a výstup.
Příklad 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)
Výstup:
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
Rozdíl mezi původní a zkrácenou hodnotou je 499.9016193868665 a z round() je to 0.04661938686695066.
Rozdíl se zdá být velmi velký a příklad ukazuje, jak metoda round() pomáhá při výpočtech s téměř přesností.
Příklad: Zaokrouhlovací plovák Numbers
V tomto programu si ukážeme, jak funguje zaokrouhlování čísel s plovoucí čárkou.
# 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))
Výstup:
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
Příklad: Zaokrouhlení celočíselných hodnot
Pokud náhodou použijete round() na celočíselnou hodnotu, vrátí vám to číslo zpět bez jakýchkoli změn.
# testing round() on a integer num = 15 print("The output is", round(num))
Výstup:
The output is 15
Příklad: Zaokrouhlení na záporné Numbers
Podívejme se na několik příkladů, jak funguje zaokrouhlování záporných čísel.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
Výstup:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Příklad: Zaoblená pole NumPy
Jak zaokrouhlovat NumPy pole v Python?
K vyřešení tohoto problému můžeme použít modul NumPy a použít metodu numpy.round() nebo numpy.around(), jak je znázorněno v níže uvedeném příkladu.
Použití 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)
Výstup:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Můžeme také použít numpy.around(), což nám dá stejný výsledek jako numpy.round() zobrazený výše.
Příklad: Desetinný modul
Kromě funkce round() Python má decimalní modul, který pomáhá přesněji zpracovávat desetinná čísla.
Modul Decimal nabízí typy zaokrouhlování, jak je znázorněno níže:
- KRUHOVÝ STROP: zaokrouhlí se směrem k nekonečnu.
- ZAOKROUHLIT_DOLŮ: zaokrouhlí hodnotu směrem k nule.
- KRUHOVÉ PATRO: zaokrouhlí se směrem k -nekonečnu.
- ZAOKROUHLIT_DO_POLOVINY: Zaokrouhlí se na nejbližší hodnotu směřující k nule.
- POLOVIČNÍ_KOLO_SUDÉ: Zaokrouhlí se na nejbližší hodnotu jdoucí do nejbližšího sudého celého čísla.
- ZAOKROUHLÁ_POLOVINA_NAHORU: Zaokrouhlí se na nejbližší hodnotu směrem od nuly.
- ZÁTAH: Zaokrouhlí se tam, kde se hodnota bude odchylovat od nuly.
V desítkové soustavě pomáhá metoda quantize() zaokrouhlovat na pevný počet desetinných míst a můžete zadat zaokrouhlování, které se má použít, jak je znázorněno v příkladu níže.
Příklad: Použití round() a desítkových metod
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)
Výstup:
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
