Python round() funktion med EKSEMPLER

Rund()

Round() er en indbygget funktion tilgรฆngelig med python. Det vil returnere dig et flydende tal, der vil blive afrundet til decimalerne, som er angivet som input.

Hvis de decimaler, der skal afrundes, ikke er angivet, betragtes det som 0, og det vil afrunde til nรฆrmeste heltal.

Syntaks

round(float_num, num_of_decimals)

Driftsparametre

  • float_num: det flydende tal, der skal afrundes.
  • antal_decimaler: (valgfrit) Antallet af decimaler, der skal tages i betragtning ved afrunding. Den er valgfri, og hvis den ikke er angivet, er den som standard 0, og afrundingen udfรธres til nรฆrmeste heltal.

Beskrivelse

round() metoden tager to argumenter

  • tallet, der skal afrundes og
  • de decimaler, den skal tage i betragtning ved afrunding.

Det andet argument er valgfrit og er standard til 0, nรฅr det ikke er angivet, og i sรฅ fald vil det runde af til nรฆrmeste heltal, og returtypen vil ogsรฅ vรฆre et heltal.

Nรฅr decimalerne, dvs. det andet argument, er til stede, afrundes det til det angivne antal pladser. Returtypen vil vรฆre en flyder.

Hvis tallet efter decimalen angivet

  • >=5 end + 1 vil blive lagt til den endelige vรฆrdi
  • <5 end den endelige vรฆrdi vil returnere, da den er op til de nรฆvnte decimaler.

Returvรฆrdi

Det vil returnere en heltalsvรฆrdi, hvis num_of_decimals ikke er givet, og en flydende vรฆrdi, hvis num_of_decimals er givet. Bemรฆrk venligst, at vรฆrdien vil blive afrundet til +1, hvis vรฆrdien efter decimalkommaet er >=5, ellers returnerer den vรฆrdien, da den er op til de nรฆvnte decimaler.

Hvor stor indflydelse kan afrunding have? (Afrunding vs trunkering)

Det bedste eksempel pรฅ at vise effekten af โ€‹โ€‹afrunding er for bรธrsmarkedet. I fortiden, dvs. i รฅr 1982 Vancouver bรธrs (VSE): bruges til at afkorte aktievรฆrdierne til tre decimaler pรฅ hver handel.

Det blev gjort nรฆsten 3000 gange hver dag. De akkumulerede trunkeringer fรธrer til et tab pรฅ omkring 25 point pr. mรฅned.

Et eksempel pรฅ trunkering af vรฆrdierne i forhold til afrunding er vist nedenfor.

Betragt de floating-point-tal, der genereres nedenfor, som aktievรฆrdier. Lige nu genererer jeg det til en rรฆkke af

1,000,000 sekunder mellem 0.01 og 0.05.

eksempler:

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]

For at vise virkningen af โ€‹โ€‹afrunding har jeg skrevet et lille stykke kode, hvor du fรธrst skal bruge tallene op til kun 3 decimaler, dvs. at afkorte tallet efter 3 decimaler.

Jeg har den oprindelige samlede vรฆrdi, totalen kommer fra trunkerede vรฆrdier og forskellen mellem original og trunkeret vรฆrdi.

Pรฅ det samme sรฆt tal har jeg brugt round() metoden op til 3 decimaler og beregnet summen og forskellen mellem den oprindelige vรฆrdi og den afrundede vรฆrdi.

Her er eksemplet og outputtet
Eksempel 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)

Output:

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

Forskellen mellem original og efter trunkering er 499.9016193868665, og fra rund er den 0.04661938686695066

Forskellen ser ud til at vรฆre meget stor, og eksemplet viser, hvordan man round() metode hjรฆlper med at beregne tรฆt pรฅ nรธjagtighed.

Eksempel: Rounding Float Numbers

I dette program vil vi se, hvordan ord afrundes pรฅ flydende 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))

Output:

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

Eksempel: Afrunding af heltalsvรฆrdier

Hvis du tilfรฆldigvis bruger round() pรฅ en heltalsvรฆrdi, vil det bare returnere dig tallet uden รฆndringer.

# testing round() on a integer

num = 15

print("The output is", round(num))

Output:

The output is 15

Eksempel: Afrunding pรฅ negativ Numbers

Lad os se nogle fรฅ eksempler pรฅ, hvordan afrunding virker pรฅ negative 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))

Output:

C:\pythontest>python testround.py
The value after rounding is -3
The value after rounding is -2

Eksempel: Round Numpy Arrays

Hvordan man runder numpy arrays i python?

For at lรธse dette kan vi gรธre brug af numpy-modulet og bruge numpy.round()- eller numpy.around()-metoden, som vist i eksemplet nedenfor.

Brug af 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)

Output:

C:\pythontest>python testround.py
[-0.34  1.46  4.23 -0.34  7.63  5.12]

Vi kan ogsรฅ bruge numpy.around(), som giver dig det samme resultat som vist i eksemplet nedenfor.

Eksempel: Decimalmodul

Ud over funktionen round() har python et decimalmodul, der hjรฆlper med at hรฅndtere decimaltal mere prรฆcist.

Decimalmodulet leveres med afrundingstyper, som vist nedenfor:

  • ROUND_CEILING: det vil runde mod Uendelighed,
  • ROUND_DOWN: det vil runde vรฆrdien mod nul,
  • ROUND_FLOOR: den vil runde mod -Uendelig,
  • ROUND_HALF_DOWN: den vil afrunde til nรฆrmeste vรฆrdi, der gรฅr mod nul,
  • ROUND_HALF_EVEN: det vil afrunde til nรฆrmeste med vรฆrdi, der gรฅr til nรฆrmeste lige heltal,
  • ROUND_HALF_UP: den afrundes til nรฆrmeste med vรฆrdi, der gรฅr vรฆk fra nul
  • ROUND_UP: det vil runde, hvor vรฆrdien vil gรฅ vรฆk fra nul.

I decimal hjรฆlper quantize()-metoden med at afrunde til et fast antal decimaler, og du kan angive den afrunding, der skal bruges, som vist i eksemplet nedenfor.
Eksempel:
Brug af round() og 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)

Output:

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

Resumรฉ

  • Round(float_num, Num_of_decimals) er en indbygget funktion tilgรฆngelig med python. Det vil returnere dig det flydende tal, der vil blive afrundet til decimalerne, som er angivet som input.
  • float_num: det flydende tal, der skal afrundes.
  • Antal_decimaler: Det er antallet af decimaler, der skal tages i betragtning ved afrunding.
  • Det vil returnere en heltalsvรฆrdi, hvis num_of_decimals ikke er givet, og en flydende vรฆrdi, hvis num_of_decimals er givet.

Opsummer dette indlรฆg med: