Python round()-funktio EXAMPLESilla
Pyรถristรครค()
Round() on sisรครคnrakennettu toiminto, joka on saatavana pythonissa. Se palauttaa float-luvun, joka pyรถristetรครคn syรถtteenรค annettuihin desimaaleihin.
Jos pyรถristettรคvรครค desimaalipistettรค ei ole mรครคritetty, sen katsotaan olevan 0, ja se pyรถristetรครคn lรคhimpรครคn kokonaislukuun.
Syntaksi
round(float_num, num_of_decimals)
parametrit
- float_num: pyรถristettรคvรค liukuluku.
- desimaalien_mรครคrรค: (valinnainen) Pyรถristyksen aikana huomioon otettava desimaalien mรครคrรค. Se on valinnainen, ja jos sitรค ei ole mรครคritetty, sen oletusarvo on 0, ja pyรถristys suoritetaan lรคhimpรครคn kokonaislukuun.
Tuotetiedot
round()-menetelmรคssรค on kaksi argumenttia
- pyรถristettรคvรค numero ja
- desimaalit, joita sen tulee ottaa huomioon pyรถristyksen aikana.
Toinen argumentti on valinnainen ja sen oletusarvo on 0, kun sitรค ei ole mรครคritetty, ja siinรค tapauksessa se pyรถristetรครคn lรคhimpรครคn kokonaislukuun, ja palautustyyppi on myรถs kokonaisluku.
Kun desimaalit eli toinen argumentti on olemassa, pyรถristetรครคn annettujen paikkojen lukumรครคrรครคn. Palautustyyppi on float.
Jos desimaalin jรคlkeinen numero on annettu
- >=5 kuin + 1 lisรคtรครคn lopulliseen arvoon
- <5, lopullinen arvo palautetaan, koska se on mainittujen desimaalien tarkkuudella.
Palautusarvo
Se palauttaa kokonaisluvun, jos desimaalien_mรครคrรค ei ole annettu, ja kelluvan arvon, jos desimaalien_mรครคrรค on annettu. Huomaa, ettรค arvo pyรถristetรครคn arvoon +1, jos desimaalipilkun jรคlkeen oleva arvo on >=5, muuten se palauttaa arvon mainitun desimaalin tarkkuudella.
Kuinka paljon vaikutusta pyรถristyksellรค voi olla? (pyรถristys vs katkaisu)
Paras esimerkki pyรถristyksen vaikutuksesta on pรถrssimarkkinoilla. Aiemmin eli vuonna 1982 Vancouverin pรถrssi (VSE): kรคytetรครคn katkaisemaan osakkeiden arvot kolmen desimaalin tarkkuudella kussakin kaupassa.
Sitรค tehtiin lรคhes 3000 kertaa pรคivรคssรค. Kertyneet katkaisut johtavat noin 25 pisteen menetykseen kuukaudessa.
Alla on esimerkki arvojen lyhentรคmisestรค pyรถristykseen verrattuna.
Tarkastellaan alla luotuja liukulukuja osakearvoina. Tรคllรค hetkellรค luon sitรค useille
1,000,000 0.01 0.05 sekuntia vรคlillรค XNUMX ja XNUMX.
Esimerkkejรค:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Pyรถristyksen vaikutuksen havainnollistamiseksi olen kirjoittanut pienen koodinpรคtkรคn, jossa on aluksi kรคytettรคvรค numeroita vain 3 desimaalin tarkkuudella eli katkaistava luku 3 desimaalin jรคlkeen.
Minulla on alkuperรคinen kokonaisarvo, kokonaisarvo tulee katkaistuista arvoista ja ero alkuperรคisen ja katkaistun arvon vรคlillรค.
Samalla numerosarjalla olen kรคyttรคnyt round()-menetelmรครค 3 desimaalin tarkkuudella ja laskenut alkuperรคisen arvon ja pyรถristetyn arvon vรคlisen summan ja erotuksen.
Tรคssรค on esimerkki ja tulos
Esimerkki 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)
lรคhtรถ:
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
Ero alkuperรคisen ja katkaisun jรคlkeen on 499.9016193868665 ja pyรถreรคn 0.04661938686695066
Ero nรคyttรครค olevan erittรคin suuri, ja esimerkki osoittaa, kuinka round()-menetelmรค auttaa laskemaan lรคhellรค tarkkuutta.
Esimerkki: Pyรถristรคvรค kellunta Numbers
Tรคssรค ohjelmassa nรคemme kuinka pyรถristetรครคn sanoja kelluvilla numeroilla
# 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))
lรคhtรถ:
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
Esimerkki: Kokonaislukuarvojen pyรถristys
Jos satut kรคyttรคmรครคn round():ta kokonaislukuarvona, se palauttaa sinulle luvun ilman muutoksia.
# testing round() on a integer
num = 15
print("The output is", round(num))
lรคhtรถ:
The output is 15
Esimerkki: Negatiivin pyรถristys Numbers
Katsotaanpa muutamia esimerkkejรค siitรค, kuinka pyรถristys toimii negatiivisilla luvuilla
# testing round()
num = -2.8
num1 = -1.5
print("The value after rounding is", round(num))
print("The value after rounding is", round(num1))
lรคhtรถ:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Esimerkki: Pyรถreรคt numpy-taulukot
Kuinka pyรถristรครค nukka taulukot pythonissa?
Tรคmรคn ratkaisemiseksi voimme kรคyttรครค numpy-moduulia ja numpy.round()- tai numpy.around()-metodia alla olevan esimerkin mukaisesti.
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)
lรคhtรถ:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Voimme myรถs kรคyttรครค numpy.around(), joka antaa sinulle saman tuloksen kuin alla olevassa esimerkissรค.
Esimerkki: Desimaalimoduuli
Pythonissa on round()-funktion lisรคksi desimaalimoduuli, joka auttaa kรคsittelemรครคn desimaalilukuja tarkemmin.
Desimaalimoduulissa on pyรถristystyypit, kuten alla on esitetty:
- ROUND_CEILING: se pyรถrii kohti รครคretรถntรค,
- ROUND_DOWN: se pyรถristรครค arvon kohti nollaa,
- ROUND_FLOOR: se pyรถristyy kohti -รครคrettรถmyyttรค,
- ROUND_HALF_DOWN: se pyรถristyy lรคhimpรครคn arvoon nollaa kohti,
- ROUND_HALF_EVEN: se pyรถristyy lรคhimpรครคn, ja arvo tulee lรคhimpรครคn parilliseen kokonaislukuun,
- ROUND_HALF_UP: pyรถristetรครคn lรคhimpรครคn arvoon poissa nollasta
- ROUND_UP: se pyรถristรครค, missรค arvo poikkeaa nollasta.
Desimaalimuodossa quantize()-menetelmรค auttaa pyรถristรคmรครคn kiinteรครคn mรครคrรครคn desimaaleja, ja voit mรครคrittรครค kรคytettรคvรคn pyรถristyksen alla olevan esimerkin mukaisesti.
Esimerkiksi:
Pyรถreรค()- ja desimaalimenetelmillรค
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)
lรคhtรถ:
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
Yhteenveto
- Round(float_num, Sum_of_decimals) on sisรครคnrakennettu funktio, joka on saatavana pythonissa. Se palauttaa float-luvun, joka pyรถristetรครคn syรถtteenรค annettuihin desimaaleihin.
- float_num: pyรถristettรคvรค liukuluku.
- Desimaalien_mรครคrรค: Tรคmรค on pyรถristyksen aikana huomioon otettava desimaalien mรครคrรค.
- Se palauttaa kokonaisluvun, jos desimaalien_mรครคrรค ei ole annettu, ja kelluvan arvon, jos desimaalien_mรครคrรค on annettu.
