Python Funkcija round() s PRIMJERIMA
โก Pametni saลพetak
Python round() je ugraฤena funkcija koja vraฤa vrijednost s pomiฤnim zarezom ili cijeli broj zaokruลพenu na odreฤeni broj decimalnih mjesta, koristeฤi bankarsko zaokruลพivanje za prekid veze prema najbliลพoj parnoj znamenki.

ล to je funkcija round() u Python?
Python round() je ugraฤena funkcija dostupna s PythonVratit ฤe vam broj s pomiฤnim zarezom koji ฤe biti zaokruลพen na decimalna mjesta koja su zadana kao ulaz.
Ako decimalna mjesta koja se zaokruลพuju nisu navedena, smatra se da je 0 i zaokruลพit ฤe se na najbliลพi cijeli broj.
Sintaksa
round(float_num, num_of_decimals)
Parametri
- broj_s_floatom: Broj s pomiฤnim decimalom koji treba zaokruลพiti.
- broj_decimalnih_mjeseca: (neobavezno) Broj decimalnih mjesta koji se uzimaju u obzir prilikom zaokruลพivanja. Nije obavezno, a ako nije navedeno, zadana vrijednost je 0, a zaokruลพivanje se vrลกi na najbliลพi cijeli broj.
Description
Metoda round() prima dva argumenta:
- broj koji treba zaokruลพiti, i
- decimalna mjesta koja treba uzeti u obzir prilikom zaokruลพivanja.
Drugi argument je opcionalan i zadana vrijednost je 0 kada nije naveden, a u tom sluฤaju ฤe se zaokruลพiti na najbliลพi cijeli broj, a povratni tip ฤe takoฤer biti cijeli broj.
Kada su prisutna decimalna mjesta, tj. drugi argument, zaokruลพit ฤe se na navedeni broj mjesta. Tip povrata bit ฤe float.
Ako je broj iza decimalnog mjesta zadan:
- >= 5, tada ฤe se konaฤnoj vrijednosti dodati +1.
- < 5, tada ฤe se konaฤna vrijednost vratiti kakva jest, do navedenih decimalnih mjesta.
Povratna vrijednost
Vratit ฤe cjelobrojnu vrijednost ako broj_decimala nije zadan, a vrijednost s pomiฤnim zarezom ako je zadan broj_decimala. Imajte na umu da ฤe vrijednost biti zaokruลพena na +1 ako je vrijednost nakon decimalne toฤke >= 5, inaฤe ฤe vratiti vrijednost kakva jest, do navedenih decimalnih mjesta.
Koliki utjecaj moลพe imati zaokruลพivanje? (Zaokruลพivanje u odnosu na skraฤivanje)
Najbolji primjer koji pokazuje utjecaj zaokruลพivanja je burza. U proลกlosti, tj. 1982. godine, Burza u Vancouveru (VSE) koristi se za skraฤivanje vrijednosti dionica na tri decimalna mjesta u svakoj trgovini.
To se radilo gotovo 3000 puta svaki dan. Nagomilana skraฤivanja dovela su do gubitka od oko 25 bodova mjeseฤno.
Dolje je prikazan primjer skraฤivanja vrijednosti u odnosu na zaokruลพivanje.
Razmotrite dolje generirane brojeve s pomiฤnim zarezom kao vrijednosti dionica. Trenutno ih generiram za raspon od 1,000,000 sekundi izmeฤu 0.01 i 0.05.
Primjeri:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Kako bih pokazao utjecaj zaokruลพivanja, napisao sam mali dio koda u kojem se prvo koriste brojevi do samo 3 decimale, tj. skraฤuje se broj nakon 3 decimale.
Imam izvornu ukupnu vrijednost, ukupan zbroj koji dolazi od skraฤenih vrijednosti i razliku izmeฤu izvorne i skraฤene vrijednosti.
Na istom skupu brojeva koristio sam metodu round() do 3 decimale i izraฤunao zbroj i razliku izmeฤu izvorne vrijednosti i zaokruลพene vrijednosti.
Evo primjera i rezultata.
Primjer 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)
Izlaz:
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
Razlika izmeฤu izvorne i skraฤene vrijednosti je 499.9016193868665, a iz round() je 0.04661938686695066.
Razlika se ฤini vrlo velikom, a primjer pokazuje kako metoda round() pomaลพe u izraฤunu gotovo toฤnim.
Primjer: Rounding Float Numbers
U ovom programu ฤemo vidjeti kako zaokruลพivanje funkcionira na brojevima s pomiฤnim snopom.
# 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))
Izlaz:
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
Primjer: Zaokruลพivanje cijelih vrijednosti
Ako sluฤajno koristite round() na cjelobrojnoj vrijednosti, ona ฤe vam samo vratiti broj bez ikakvih promjena.
# testing round() on a integer num = 15 print("The output is", round(num))
Izlaz:
The output is 15
Primjer: zaokruลพivanje na negativno Numbers
Pogledajmo nekoliko primjera kako zaokruลพivanje funkcionira na negativnim brojevima.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
Izlaz:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Primjer: Zaokruลพeni NumPy nizovi
Kako zaokruลพiti NumPy nizovi u Python?
Da bismo to rijeลกili, moลพemo koristiti NumPy modul i koristiti metodu numpy.round() ili numpy.around(), kao ลกto je prikazano u primjeru ispod.
Upotreba 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)
Izlaz:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Takoฤer moลพemo koristiti numpy.around(), koji daje isti rezultat kao numpy.round() prikazan gore.
Primjer: decimalni modul
Uz funkciju round(), Python ima decimalni modul koji pomaลพe u preciznijem rukovanju decimalnim brojevima.
Modul Decimal dolazi s vrstama zaokruลพivanja, kao ลกto je prikazano u nastavku:
- OKRUGLI STROP: zaokruลพit ฤe se prema Beskonaฤnosti.
- ZAOKRUลฝIVANJE: zaokruลพit ฤe vrijednost prema nuli.
- OKRUGLI KAT: zaokruลพit ฤe se prema -beskonaฤno.
- ZAOKRUลฝENO_DO_POLOVICE: zaokruลพit ฤe se na najbliลพu vrijednost koja ide prema nuli.
- POLU_RUND_PARNO: zaokruลพit ฤe se na najbliลพu vrijednost iduฤi do najbliลพeg parnog cijelog broja.
- ZAOKRUลฝENJE_NA_POLOVICU_GORE: zaokruลพit ฤe se na najbliลพu vrijednost udaljavajuฤi se od nule.
- ZAOKRUลฝIVANJE: zaokruลพit ฤe se tamo gdje ฤe se vrijednost udaljavati od nule.
U decimalnom sustavu, metoda quantize() pomaลพe u zaokruลพivanju na fiksni broj decimalnih mjesta, a moลพete odrediti zaokruลพivanje koje ฤe se koristiti, kao ลกto je prikazano u primjeru u nastavku.
Primjer: Koriลกtenje round() i decimalnih metoda
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)
Izlaz:
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
