Rund()
Round () er en innebygd funksjon tilgjengelig med python. Det vil gi deg et flytnummer som blir avrundet til desimalene som er gitt som inndata.
Hvis desimalene som skal avrundes ikke er spesifisert, betraktes det som 0, og det vil rundes til nærmeste heltall.
I denne Python-opplæringen lærer du:
- Rund()
- Syntaks:
- Hvor stor innvirkning kan avrunding ha? (Avrunding vs avkorting)
- Eksempel: Avrunding av flytnumre
- Eksempel: Avrunding av heltallverdier
- Eksempel: Avrunding på negative tall
- Eksempel: Round Numpy Arrays
- Eksempel: Desimalmodul
Syntaks:
round(float_num, num_of_decimals)
Parametere
- float_num: float-nummeret som skal avrundes.
- num_of_decimals: (valgfritt) Antall desimaler som skal vurderes under avrunding. Det er valgfritt, og hvis ikke spesifisert, er det standard 0, og avrundingen gjøres til nærmeste heltall.
Beskrivelse
Round () -metoden tar to argumenter
- antallet som skal avrundes og
- desimalene den bør ta i betraktning under avrunding.
Det andre argumentet er valgfritt og er som standard 0 når det ikke er spesifisert, og i så fall vil det rundes til nærmeste heltall, og returtypen vil også være et heltall.
Når desimaltallene, dvs. det andre argumentet, er til stede, vil det avrundes til antall plasser som er gitt. Returtypen vil være en flottør.
Hvis tallet etter desimalplassen gitt
- > = 5 enn + 1 vil bli lagt til den endelige verdien
- <5 enn den endelige verdien kommer tilbake siden den er opp til desimalene som er nevnt.
Returverdi
Det vil returnere en heltallverdi hvis antall_decimaler ikke er gitt, og en flottørverdi hvis antall_decimalene er gitt. Vær oppmerksom på at verdien blir avrundet til +1 hvis verdien etter desimaltegnet er> = 5 ellers vil den returnere verdien da den er opp til desimalene som er nevnt.
Hvor stor innvirkning kan avrunding ha? (Avrunding vs avkorting)
Det beste eksemplet for å vise effekten av avrunding er for børsmarkedet. Tidligere, dvs. i 1982, brukte Vancouver Stock Exchange (VSE): å avkorte aksjeverdiene til tre desimaler på hver handel.
Det ble gjort nesten 3000 ganger hver dag. De akkumulerte avkortingene fører til et tap på rundt 25 poeng per måned.
Et eksempel på avkorting av verdiene versus avrunding er vist nedenfor.
Tenk på flytende tall som genereres nedenfor som lagerverdier. Akkurat nå genererer jeg det for en rekke
1.000.000 sekunder mellom 0,01 og 0,05.
Eksempler:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
For å vise virkningen av avrunding, har jeg skrevet et lite stykke kode der du først må bruke tallene opp til bare 3 desimaler, dvs. avkorte tallet etter 3 desimaler.
Jeg har den opprinnelige totale verdien, den totale verdien fra avkortede verdier og forskjellen mellom opprinnelig og avkortet verdi.
På det samme settet med tall har jeg brukt rund () -metoden opp til 3 desimaler og beregnet summen og forskjellen mellom den opprinnelige verdien og den avrundede verdien.
Her er eksemplet og utdataene
Eksempel 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)
Produksjon:
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
Forskjellen mellom original og etter avkorting er 499,9016193868665, og fra rund er 0,04661938686695066
Forskjellen ser ut til å være veldig stor, og eksemplet viser hvordan runde () -metoden hjelper til med å beregne nær nøyaktighet.
Eksempel: Avrunding av flytnumre
I dette programmet vil vi se hvordan avrunding av ord på flytende tall
# 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))
Produksjon:
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
Eksempel: Avrunding av heltallverdier
Hvis du tilfeldigvis bruker runde () på et heltall, vil det bare gi deg tilbake tallet uten noen endringer.
# testing round() on a integernum = 15print("The output is", round(num))
Produksjon:
The output is 15
Eksempel: Avrunding på negative tall
La oss se noen eksempler på hvordan avrunding fungerer på negative tall
# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))
Produksjon:
C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2
Eksempel: Round Numpy Arrays
Hvordan runde numpy matriser i python?
For å løse dette kan vi bruke numpy-modulen og bruke metoden numpy.round () eller numpy.around (), som vist i eksemplet nedenfor.
Bruke 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)
Produksjon:
C:\pythontest>python testround.py[-0.34 1.46 4.23 -0.34 7.63 5.12]
Vi kan også bruke numpy.around (), som gir deg det samme resultatet som vist i eksemplet nedenfor.
Eksempel: Desimalmodul
I tillegg til funksjonen round () har python en desimalmodul som hjelper deg med å håndtere desimaltall mer nøyaktig.
Desimalmodulen leveres med avrundingstyper, som vist nedenfor:
- ROUND_CEILING: den vil rundes mot uendelig,
- ROUND_DOWN: den vil runde verdien mot null,
- RUND_FLOOR: den vil rundes mot -Uendelig,
- ROUND_HALF_DOWN: den vil rundes til nærmeste verdi som går mot null,
- ROUND_HALF_EVEN: den vil rundes til nærmeste med verdi som går til nærmeste til og med heltall,
- ROUND_HALF_UP: den vil rundes nærmest med verdi som går fra null
- ROUND_UP: den vil runde der verdien vil gå fra null.
I desimal hjelper quantize () -metoden til å avrunde til et fast antall desimaler, og du kan spesifisere avrundingen som skal brukes, som vist i eksemplet nedenfor.
Eksempel:
Ved hjelp av runde () og desimalmetoder
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)
Produksjon:
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
Sammendrag:
- Round (float_num, Num_of_decimals) er en innebygd funksjon tilgjengelig med python. Det vil gi deg flytnummeret som blir avrundet til desimalene som er gitt som inndata.
- float_num: float-nummeret som skal avrundes.
- Num_of_decimals: Det er antall desimaler som skal vurderes under avrunding.
- Det vil returnere en heltallverdi hvis antall_decimaler ikke er gitt, og en flottørverdi hvis antall_decimalene er gitt.