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.