Python round()-funktio esimerkkeineen

โšก ร„lykรคs yhteenveto

Python round() on sisรครคnrakennettu funktio, joka palauttaa liukuluku- tai kokonaisluvun pyรถristettynรค tiettyyn desimaalien mรครคrรครคn kรคyttรคen pankkiirin pyรถristystรค tasalukujen ratkaisemiseksi lรคhimpรครคn parilliseen numeroon.

  • ๐Ÿ”˜ Syntaksi: round(number, ndigits) hyvรคksyy pyรถristettรคvรคn arvon ja valinnaisen numeroiden mรครคrรคn, jonka oletusarvo on nolla.
  • โ˜‘๏ธ Palautustyyppi: Jos ndigits-muuttujaa ei ole, palautetaan kokonaisluku, kun taas jos sitรค annetaan, palautetaan liukuluku.
  • โœ… Pankkiirin pyรถristys: Puolivรคlissรค olevat arvot pyรถristetรครคn lรคhimpรครคn parilliseen lukuun, joten round(2.5) palauttaa arvon 2.
  • ๐Ÿงช Negatiiviset luvut: Pyรถristรคminen koskee myรถs negatiivisia lukuja, eli -2.8 muunnetaan arvoon -3 ja -1.5 arvoon -2.
  • ๐Ÿ› ๏ธ Tarkkuustyรถkalut: Desimaalimoduuli ja NumPy round() kรคsittelevรคt kiinteรคn tarkkuuden ja taulukon pyรถristyksen.
  • ๐Ÿค– Tekoรคlyn tyรถnkulut: Koneoppimiskoodi pyรถristรครค metriikat, todennรคkรถisyydet ja painot selkeรคmpรครค lokikirjausta ja raportteja varten.

Python round()-funktio

Mikรค on round()-funktio funktiossa Python?

Python round() on sisรครคnrakennettu funktio, joka on kรคytettรคvissรค PythonSe palauttaa liukulukun, joka pyรถristetรครคn syรถtteenรค annettujen desimaalien tarkkuudelle.

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

  • liukuluku: Pyรถristettรคvรค liukuluku.
  • desimaalien_mรครคrรค: (valinnainen) Pyรถristyksessรค huomioon otettavien desimaalien lukumรครคrรค. Tรคmรค on valinnainen, ja jos sitรค ei ole mรครคritetty, oletusarvo on 0 ja pyรถristys tehdรครคn lรคhimpรครคn kokonaislukuun.

Tuotetiedot

round()-metodi ottaa vastaan โ€‹โ€‹kaksi argumenttia:

  • pyรถristettรคvรค luku ja
  • desimaalit, joita sen tulee ottaa huomioon pyรถristyksen aikana.

Toinen argumentti on valinnainen ja sen oletusarvo on 0, jos sitรค ei ole mรครคritetty. Tรคllaisessa tapauksessa se pyรถristetรครคn lรคhimpรครคn kokonaislukuun ja paluutyyppi on myรถs kokonaisluku.

Kun desimaalit eli toinen argumentti on olemassa, pyรถristetรครคn annettujen paikkojen lukumรครคrรครคn. Palautustyyppi on float.

Jos annetun desimaalipilkun jรคlkeinen luku on:

  • >= 5, niin lopulliseen arvoon lisรคtรครคn + 1.
  • < 5, niin lopullinen arvo palautetaan sellaisenaan, mainittuihin desimaalien tarkkuudella.

Palautusarvo

Se palauttaa kokonaisluvun, jos desimaalien_mรครคrรครค ei ole annettu, ja liukulukuarvon, jos desimaalien_mรครคrรค on annettu. Huomaa, ettรค arvo pyรถristetรครคn +1:een, jos desimaalipilkun jรคlkeinen arvo on >= 5. Muussa tapauksessa se palauttaa arvon sellaisenaan, mainittuihin desimaalien tarkkuudella.

Kuinka paljon vaikutusta pyรถristyksellรค voi olla? (pyรถristys vs katkaisu)

Paras esimerkki pyรถristรคmisen vaikutuksesta on pรถrssimarkkinat. Aiemmin, eli vuonna 1982, Vancouverin pรถrssi (VSE) kรคytetรครคn osakkeiden arvojen katkaisemiseen kolmen desimaalin tarkkuudella jokaisessa kaupassa.

Se tehtiin lรคhes 3000 kertaa pรคivรคssรค. Kertyneet katkaisut johtivat noin 25 pisteen menetykseen kuukaudessa.

Alla on esimerkki arvojen lyhentรคmisestรค pyรถristykseen verrattuna.

Tarkastellaan alla olevia liukulukuja osakearvoina. Tรคllรค hetkellรค luon niitรค miljoonan sekunnin ajalle vรคlillรค 0.01 ja 0.05.

Esimerkkejรค:

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

Pyรถristรคmisen vaikutuksen havainnollistamiseksi olen kirjoittanut pienen koodinpรคtkรคn, jossa aluksi kรคytetรครคn numeroita vain kolmen desimaalin tarkkuudella eli katkaistaan โ€‹โ€‹luku kolmen desimaalin jรคlkeen.

Minulla on alkuperรคinen kokonaisarvo, katkaistujen arvojen kokonaisarvo sekรค alkuperรคisen ja katkaistun arvon vรคlinen erotus.

Samoille lukujoukoille olen kรคyttรคnyt round()-metodia kolmen desimaalin tarkkuudella ja laskenut alkuperรคisen arvon ja pyรถristettyjen lukujen summan ja erotuksen.

Tรคssรค on esimerkki ja tuloste.

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

Alkuperรคisen ja katkaistun arvon vรคlinen erotus on 499.9016193868665, ja round()-funktion perusteella se on 0.04661938686695066.

Ero nรคyttรครค olevan erittรคin suuri, ja esimerkki osoittaa, kuinka round()-metodi auttaa laskemaan lรคhes tarkasti.

Esimerkki: Pyรถristรคvรค kellunta Numbers

Tรคssรค ohjelmassa nรคemme, miten pyรถristรคminen toimii kelluvien lukujen kanssa.

# 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รค, miten pyรถristรคminen 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

Miten pyรถristรคt NumPyn taulukot Python?

Ratkaistaksemme tรคmรคn voimme hyรถdyntรครค NumPy-moduulia ja kรคyttรครค numpy.round()- tai numpy.around()-metodia, kuten alla olevassa esimerkissรค on esitetty.

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 kรคyttรครค myรถs numpy.around()-funktiota, joka antaa saman tuloksen kuin yllรค esitetty numpy.round().

Esimerkki: Desimaalimoduuli

round()-funktion lisรคksi Python sisรคltรครค desimaalimoduulin, joka auttaa kรคsittelemรครคn desimaalilukuja tarkemmin.

Desimaalimoduuli sisรคltรครค pyรถristystyyppejรค, kuten alla on esitetty:

  • PYร–REร„_KATTO: se pyรถrii kohti รครคrettรถmyyttรค.
  • PYร–RISTร„_ALAS: se pyรถristรครค arvon kohti nollaa.
  • PYร–REร„_KERROS: se pyรถrii kohti -รครคrettรถmyyttรค.
  • PUOLIKAS_ALAS: se pyรถristyy lรคhimpรครคn nollaa kohti menevรครคn arvoon.
  • PUOLIKAS_PARILLINEN: se pyรถristyy lรคhimpรครคn arvoon ja pyรถristyy lรคhimpรครคn parilliseen kokonaislukuun.
  • PYร–RISTร„_PUOLIKSI_YLร–S: se pyรถristyy lรคhimpรครคn nollasta poispรคin olevaan arvoon.
  • RATSIA: se pyรถristyy kohdassa, jossa arvo poistuu 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

UKK

Ei. Python Mallissa 3 kรคytetรครคn tasatulosten pyรถristรคmistรค puolikkaaksi parilliseksi (pankkiirin pyรถristys), joten round(0.5) on 0, round(2.5) on 2 ja round(3.5) on 4. Tรคmรค vรคhentรครค kumulatiivista vinoumaa.

Koska lukua 2.675 ei voida tallentaa tรคsmรคlleen binรครคrisenรค liukulukuina, se itse asiassa tallennetaan muodossa 2.6749999999999998, joten round() pyรถristรครค alaspรคin. Tarkkojen tulosten saamiseksi kรคytรค funktiota decimal.Decimal('2.675').

Kรคytรค math-moduulia: math.ceil(x) pyรถristรครค aina ylรถspรคin, math.floor(x) pyรถristรครค aina alaspรคin ja int(x) katkaisee kohti nollaa. round() itsessรครคn ei voi pakottaa kiinteรครค suuntaa.

Anna negatiivinen toinen argumentti: round(12345, -1) antaa tulokseksi 12340, round(12345, -2) antaa tulokseksi 12300 ja round(12345, -3) antaa tulokseksi 12000. Negatiiviset ndigitit pyรถristรคvรคt desimaalipilkun vasemmalle puolelle.

round(x, 2) muuttaa myรถhemmissรค matematiikassa kรคytettรคvรครค arvoa, kun taas f'{x:.2f}' vain muotoilee nรคytรถn ja pitรครค luvun ennallaan. Kรคytรค round():ia laskutoimituksiin ja f-merkkijonoja tulostukseen.

Ei. Numbers ovat muuttumattomia, joten round() palauttaa uuden arvon muuttamatta syรถtettรครคn. Aseta se arvoon, esimerkiksi tulos = round(3.14159, 2); alkuperรคinen muuttuja sรคilyttรครค tรคyden tarkkuuden.

Koneoppimiskoodi pyรถristรครค luettavien lokien tarkkuus-, hรคvikki- ja todennรคkรถisyysarvot ja yhdistรครค ennusteet luokkatunnisteisiin. Sรคilytรค tรคysi tarkkuus gradienttimatematiikassa ja pyรถristรค vain lopulliset nรคytetyt mittarit.

Kyllรค. Tekoรคlyavustajat, kuten GitHub Copilot, tรคydentรคvรคt automaattisesti round()- ja np.round()-funktiot sekรค desimaalipyรถristyksen kommentin tai funktion nimestรค, ja agenttityรถkalut muokkaavat manuaalisen muotoilun round()-kutsuiksi, vaikka valittu tarkkuus vaatii vielรค tarkistamista.

Tiivistรค tรคmรค viesti seuraavasti: