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.

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