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

