Python round()-funktion med EXEMPEL
โก Smart sammanfattning
Python round() รคr en inbyggd funktion som returnerar ett flyttal eller heltal avrundat till ett angivet antal decimaler, med hjรคlp av bankers avrundning fรถr att bryta oavbrutet vรคrde mot nรคrmaste jรคmna siffra.

Vad รคr round()-funktionen i Python?
Python round() รคr en inbyggd funktion som รคr tillgรคnglig med PythonDen returnerar ett flyttal som avrundas till decimaler som anges som indata.
Om de decimaler som ska avrundas inte anges, betraktas det som 0, och det avrundas till nรคrmaste heltal.
syntax
round(float_num, num_of_decimals)
Driftparametrar
- flyttalnummer: Flyttalsvรคrdet som ska avrundas.
- antal_decimaler: (valfritt) Antalet decimaler som ska beaktas vid avrundning. Det รคr valfritt, och om inget anges รคr standardvรคrdet 0, och avrundningen gรถrs till nรคrmaste heltal.
BESKRIVNING
Metoden round() tar tvรฅ argument:
- det tal som ska avrundas, och
- de decimaler den bรถr beakta vid avrundning.
Det andra argumentet รคr valfritt och har som standard 0 nรคr det inte anges, och i sรฅdant fall avrundas det till nรคrmaste heltal, och returtypen blir ocksรฅ ett heltal.
Nรคr decimalerna, dvs det andra argumentet, finns, avrundas det till antalet angivna platser. Returtypen kommer att vara en float.
Om talet efter decimalen รคr:
- >= 5, dรฅ lรคggs + 1 till det slutliga vรคrdet.
- < 5, sรฅ returneras det slutliga vรคrdet som det รคr, upp till de angivna decimalerna.
Returvรคrde
Den returnerar ett heltal om num_of_decimals inte anges och ett flyttal om num_of_decimals anges. Observera att vรคrdet avrundas till +1 om vรคrdet efter decimaltecknet รคr >= 5, annars returnerar den vรคrdet som det รคr, upp till de angivna decimalerna.
Hur stor pรฅverkan kan avrundning ha? (Avrundning vs trunkering)
Det bรคsta exemplet fรถr att visa avrundningens inverkan รคr bรถrsmarknaden. Fรถrr i tiden, dvs. รฅr 1982, Vancouver Stock Exchange (VSE) anvรคnds fรถr att avkorta aktievรคrdena till tre decimaler vid varje handel.
Det gjordes nรคstan 3000 gรฅnger varje dag. De ackumulerade avkortningarna ledde till en fรถrlust pรฅ cirka 25 poรคng per mรฅnad.
Ett exempel pรฅ trunkering av vรคrdena kontra avrundning visas nedan.
Betrakta flyttalstalen som genereras nedan som standardvรคrden. Just nu genererar jag dem fรถr ett intervall pรฅ 1 000 000 sekunder mellan 0.01 och 0.05.
Exempel:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Fรถr att visa effekten av avrundning har jag skrivit en liten kodsnutt dรคr man fรถrst anvรคnder siffrorna upp till endast 3 decimaler, dvs. avkortar talet efter 3 decimaler.
Jag har det ursprungliga totalvรคrdet, summan som kommer frรฅn de avkortade vรคrdena och skillnaden mellan det ursprungliga och det avkortade vรคrdet.
Pรฅ samma uppsรคttning tal har jag anvรคnt round()-metoden upp till 3 decimaler och berรคknat summan och skillnaden mellan det ursprungliga vรคrdet och det avrundade vรคrdet.
Hรคr รคr exemplet och utdata.
Exempelvis 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)
Produktion:
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
Skillnaden mellan det ursprungliga och det avkortade vรคrdet รคr 499.9016193868665, och frรฅn round() รคr det 0.04661938686695066.
Skillnaden verkar vara mycket stor, och exemplet visar hur round()-metoden hjรคlper till att berรคkna med nรคra noggrannhet.
Exempel: Rounding Float Numbers
I det hรคr programmet ska vi se hur avrundning fungerar pรฅ flytande tal.
# 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))
Produktion:
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
Exempel: Avrundning av heltalsvรคrden
Om du rรฅkar anvรคnda round() pรฅ ett heltalsvรคrde, kommer det bara att returnera dig numret utan nรฅgra รคndringar.
# testing round() on a integer num = 15 print("The output is", round(num))
Produktion:
The output is 15
Exempel: Avrundning till negativ Numbers
Lรฅt oss se nรฅgra exempel pรฅ hur avrundning fungerar pรฅ negativa tal.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
Produktion:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Exempel: Runda NumPy-matriser
Hur avrundar man NumPy arrayer i Python?
Fรถr att lรถsa detta kan vi anvรคnda NumPy-modulen och anvรคnda metoden numpy.round() eller numpy.around(), som visas i exemplet nedan.
Anvรคnder 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)
Produktion:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Vi kan ocksรฅ anvรคnda numpy.around(), vilket ger samma resultat som numpy.round() som visas ovan.
Exempel: Decimalmodul
Fรถrutom round()-funktionen, Python har en decimalmodul som hjรคlper till att hantera decimaltal mer exakt.
Decimalmodulen har avrundningstyper, som visas nedan:
- RUNDT_TAK: den kommer att runda mot oรคndligheten.
- AVRUNDA_NER: den kommer att avrunda vรคrdet mot noll.
- ROUND_FLOOR: den kommer att runda mot -oรคndligheten.
- RUNDA_HALV_NER: Den avrundas till nรคrmaste vรคrde mot noll.
- ROUND_HALV_JรMN: den avrundas till nรคrmaste vรคrde och gรฅr vidare till nรคrmaste jรคmna heltal.
- AVRUNDA_HALV_UPPร : Den avrundas till nรคrmaste vรคrde som gรฅr bort frรฅn noll.
- AVRUNDA UPPร T: Den kommer att avrunda dรคr vรคrdet gรฅr bort frรฅn noll.
I decimal hjรคlper quantize()-metoden att avrunda till ett fast antal decimaler, och du kan ange vilken avrundning som ska anvรคndas, som visas i exemplet nedan.
Exempel: Anvรคnder round() och decimalmetoder
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)
Produktion:
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
