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.
