Python funkcija round() s PRIMJERIMA
Krug()
Round() je ugrađena funkcija dostupna s pythonom. Vratit će vam float broj koji će biti zaokružen na decimalna mjesta koja su dana 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
- float_num: broj float koji treba zaokružiti.
- num_of_decimals: (neobavezno) Broj decimala koje treba uzeti u obzir prilikom zaokruživanja. Nije obavezan, a ako nije naveden, zadana je vrijednost 0, a zaokruživanje se vrši na najbliži cijeli broj.
Description
Metoda round() uzima dva argumenta
- broj koji treba zaokružiti i
- decimalna mjesta koja treba uzeti u obzir prilikom zaokruživanja.
Drugi argument nije obavezan i zadana je vrijednost 0 kada nije naveden, au tom će slučaju zaokružiti na najbliži cijeli broj, a povratna vrsta također će 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 navedenog decimalnog mjesta
- >=5 od + 1 bit će dodan konačnoj vrijednosti
- <5 nego će se konačna vrijednost vratiti jer je do navedenih decimalnih mjesta.
Povratna vrijednost
Vratit će vrijednost cijelog broja ako nije zadan num_of_decimals i vrijednost s pomičnim pomičnim stupnjem ako je zadan num_of_decimals. Imajte na umu da će vrijednost biti zaokružena na +1 ako je vrijednost nakon decimalne točke >=5, inače će vratiti vrijednost 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 burzovno tržište. 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 je učinjeno gotovo 3000 puta svaki dan. Akumulirana skraćivanja dovode do gubitka od oko 25 bodova mjesečno.
Dolje je prikazan primjer skraćivanja vrijednosti u odnosu na zaokruživanje.
Brojeve s pomičnim zarezom generirane u nastavku smatrajte vrijednostima dionica. Trenutno ga generiram za niz
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 prvo trebate koristiti brojeve do samo 3 decimalna mjesta, tj. skraćivati broj nakon 3 decimalna mjesta.
Imam izvornu ukupnu vrijednost, ukupnu vrijednost koja dolazi iz skraćenih vrijednosti i razliku između izvorne i skraćene vrijednosti.
Na istom skupu brojeva koristio sam metodu round() do 3 decimalna mjesta i izračunavao 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 izvornog i naknadnog skraćivanja je 499.9016193868665, a iz kruga je 0.04661938686695066
Čini se da je razlika vrlo velika, a primjer pokazuje kako metoda round() pomaže u izračunavanju blizu točnosti.
Primjer: Rounding Float Numbers
U ovom programu ćemo vidjeti kako se riječi zaokružuju na pomične brojeve
# 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 radi 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: Okrugli Numpy nizovi
Kako zaokružiti numpy nizovi u pythonu?
Da bismo to riješili, možemo upotrijebiti modul numpy i upotrijebiti metodu numpy.round() ili numpy.around(), kao što je prikazano u primjeru u nastavku.
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 vam daje isti rezultat kao što je prikazano u primjeru u nastavku.
Primjer: decimalni modul
Uz funkciju round(), python ima decimalni modul koji pomaže u točnijem rukovanju decimalnim brojevima.
Decimalni modul dolazi s vrstama zaokruživanja, kao što je prikazano u nastavku:
- ROUND_CEILING: zaokružit će se prema beskonačnosti,
- ROUND_DOWN: zaokružit će vrijednost prema nuli,
- ROUND_FLOOR: zaokružit će se prema -Beskonačno,
- ROUND_HALF_DOWN: zaokružit će se na najbližu vrijednost prema nuli,
- ROUND_HALF_EVEN: zaokružit će na najbliži s vrijednošću koja ide na najbliži parni cijeli broj,
- ROUND_HALF_UP: zaokružit će se na najbližu s vrijednošću koja ide od nule
- ROUND_UP: zaokružit će se tamo gdje će vrijednost ići 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
rezime
- Round(float_num, Num_of_decimals) je ugrađena funkcija dostupna s pythonom. Vratit će vam float broj koji će biti zaokružen na decimalna mjesta koja su dana kao ulaz.
- float_num: broj float koji treba zaokružiti.
- Num_of_decimals: To je broj decimala koje treba uzeti u obzir prilikom zaokruživanja.
- Vratit će vrijednost cijelog broja ako nije zadan num_of_decimals i vrijednost s pomičnim pomičnim stupnjem ako je zadan num_of_decimals.