Krug()
Round () je ugrađena funkcija dostupna s pythonom. Vratit će vam plutajući broj koji će biti zaokružen na decimalna mjesta koja su dana kao ulaz.
Ako decimalna mjesta koja treba zaokružiti nisu navedena, smatra se 0 i zaokružit će se na najbliži cijeli broj.
U ovom vodiču za Python naučit ćete:
- Krug()
- Sintaksa:
- Koliki utjecaj može imati zaokruživanje? (Zaokruživanje vs skraćivanje)
- Primjer: zaokruživanje brojeva s plovkom
- Primjer: zaokruživanje cijelih vrijednosti
- Primjer: zaokruživanje na negativne brojeve
- Primjer: Okrugli Numpy nizovi
- Primjer: Decimalni modul
Sintaksa:
round(float_num, num_of_decimals)
Parametri
- float_num: broj plovka koji se zaokružuje.
- num_of_decimals: (nije obavezno) Broj decimala koje treba uzeti u obzir prilikom zaokruživanja. Nije obavezno, a ako nije navedeno, zadano je na 0, a zaokruživanje se vrši na najbliži cijeli broj.
Opis
Metoda round () uzima dva argumenta
- broj koji treba zaokružiti i
- decimalna mjesta koja treba uzeti u obzir prilikom zaokruživanja.
Drugi je argument neobavezan i zadan je na 0 ako nije naveden, a u tom će se slučaju zaokružiti na najbliži cijeli broj, a vrsta povrata također će biti cijeli broj.
Kada su prisutna decimalna mjesta, tj. Drugi argument, zaokružit će se na broj zadanih mjesta. Tip povrata bit će float.
Ako je broj iza zadanog decimalnog mjesta
- > = 5 od + 1 će se dodati konačnoj vrijednosti
- <5 od konačne vrijednosti vratit će se ovisno o decimalnim mjestima.
Povratna vrijednost
Vratit će cjelobrojnu vrijednost ako nije dat num_of_decimals i plutajuću vrijednost ako je data num_of_decimals. Imajte na umu da će vrijednost biti zaokružena na +1 ako je vrijednost nakon decimalnog zareza> = 5, inače će vratiti vrijednost kao što je do spomenutih decimalnih mjesta.
Koliki utjecaj može imati zaokruživanje? (Zaokruživanje vs skraćivanje)
Najbolji primjer za prikaz utjecaja zaokruživanja je tržište dionica. U prošlosti, tj. 1982. godine, Vancouverska burza (VSE): koristila je za skraćivanje vrijednosti dionica na tri decimale u svakoj trgovini.
To se radilo gotovo 3000 puta svaki dan. Nagomilani odsjeci dovode do gubitka od oko 25 bodova mjesečno.
Primjer skraćivanja vrijednosti u odnosu na zaokruživanje prikazan je u nastavku.
Brojeve s pomičnom 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)]
Da bih pokazao utjecaj zaokruživanja, napisao sam mali dio koda u kojem prvo morate koristiti brojeve do samo 3 decimale, tj. Skraćivanje broja nakon 3 decimale.
Imam izvornu ukupnu vrijednost, ukupnu vrijednost koja dolazi iz krnjih 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 randomdef truncate(num):return int(num * 1000) / 1000arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]sum_num = 0sum_truncate = 0for i in arr:sum_num = sum_num + isum_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 = 0sum_truncate1 = 0for i in arr:sum_num1 = sum_num1 + isum_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 placesThe original sum is = 29985.958619386867The total using truncate = 29486.057The difference from original - truncate = 499.9016193868665Testing by using round() up to 3 decimal placesThe original sum is = 29985.958619386867The total using round = 29985.912The difference from original - round = 0.04661938686695066
Razlika između izvornog i nakon skraćivanja je 499,9016193868665, a od okruglog je 0,04661938686695066
Čini se da je razlika vrlo velika, a primjer pokazuje kako metoda zaokruživanja () pomaže u izračunavanju blizu točnosti.
Primjer: zaokruživanje brojeva s plovkom
U ovom ćemo programu vidjeti kako se zaokružuju riječi na plutajućim brojevima
# 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 >5float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5print("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 : 11The rounded value without num_of_decimals is : 10The rounded value with num_of_decimals as 2 is : 10.35The rounded value with num_of_decimals as 2 is : 10.34
Primjer: zaokruživanje cijelih vrijednosti
Ako slučajno koristite round () na cijeloj vrijednosti, vratit će vam broj natrag bez ikakvih promjena.
# testing round() on a integernum = 15print("The output is", round(num))
Izlaz:
The output is 15
Primjer: zaokruživanje na negativne brojeve
Pogledajmo nekoliko primjera kako zaokruživanje djeluje na negativne brojeve
# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))
Izlaz:
C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2
Primjer: Okrugli Numpy nizovi
Kako zaokružiti numpy nizove u pythonu?
Da bismo to riješili, možemo koristiti numpy modul i koristiti numpy.round () ili numpy.around () metodu, kao što je prikazano u donjem primjeru.
Korištenje numpy.round ()
# testing round()import numpy as nparr = [-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 donjem primjeru.
Primjer: Decimalni modul
Uz funkciju round (), python ima i 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 Beskraju,
- ROUND_DOWN: zaokružit će vrijednost prema nuli,
- ROUND_FOOR: zaokružit će se prema-Beskonačnosti,
- ROUND_HALF_DOWN: zaokružit će se na najbližu vrijednost koja ide prema nuli,
- ROUND_HALF_EVEN: zaokružit će se na najbliže s vrijednošću koja ide na najbliži paran cijeli broj,
- ROUND_HALF_UP: zaokružit će se na najbliže s vrijednošću koja se kreće od nule
- ROUND_UP: zaokružit će se tamo gdje će vrijednost odstupiti od nule.
U decimalnom obliku metoda quantize () pomaže zaokruživanju na fiksni broj decimalnih mjesta, a možete odrediti i zaokruživanje koje će se koristiti, kao što je prikazano u donjem primjeru.
Primjer:
Korištenjem metoda round () i decimal
import decimalround_num = 15.456final_val = round(round_num, 2)#Using decimal modulefinal_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.46Using Decimal - ROUND_CEILING 15.46Using Decimal - ROUND_DOWN 15.45Using Decimal - ROUND_FLOOR 15.45Using Decimal - ROUND_HALF_DOWN 15.46Using Decimal - ROUND_HALF_EVEN 15.46Using Decimal - ROUND_HALF_UP 15.46Using Decimal - ROUND_UP 15.46
Sažetak:
- Round (float_num, Num_of_decimals) je ugrađena funkcija dostupna s pythonom. Vratit će vam plutajući broj koji će biti zaokružen na decimalna mjesta koja su dana kao ulaz.
- float_num: broj plovka koji se zaokružuje.
- Num_of_decimals: To je broj decimala koji se uzimaju u obzir prilikom zaokruživanja.
- Vratit će cjelobrojnu vrijednost ako nije dat num_of_decimals i plutajuću vrijednost ako je data num_of_decimals.