Python round() funktsioon koos näidetega

⚡ Nutikas kokkuvõte

Python round() on sisseehitatud funktsioon, mis tagastab ujukoma- või täisarvulise väärtuse, mis on ümardatud määratud arvu kümnendkohtadeni, kasutades panga ümardamist, et lahendada viigid lähima paarisarvu suunas.

  • 🔘 süntaksit: round(number, ndigits) aktsepteerib ümardatava väärtuse ja valikulise numbrite arvu, mis vaikimisi on null.
  • ☑️ Tagastusviis: ndigits väljajätmine tagastab täisarvu, selle sisestamine aga ujukoma.
  • Panga ümardamine: Poolväärtuslikud väärtused ümardatakse lähima paarisarvuni, seega round(2.5) tagastab 2.
  • 🧪 Negatiivsed arvud: Ümardamine kehtib ka negatiivsete arvude puhul, nihutades -2.8 väärtuseks -3 ja -1.5 väärtuseks -2.
  • 🛠️ Täppistööriistad: Kümnendmoodul ja NumPy round() käsitlevad fikseeritud täpsusega ja massiivide ümardamist.
  • 🤖 Tehisintellekti töövood: Masinõppe kood ümardab mõõdikud, tõenäosused ja kaalud puhtama logimise ja aruannete loomiseks.

Python round() Funktsioon

Mis on funktsioon round() rakenduses? Python?

Python round() on sisseehitatud funktsioon, mis on saadaval koos PythonSee tagastab sulle ujukomaarvu, mis ümardatakse sisendiks antud kümnendkohtadeni.

Kui ümardatavaid kümnendkohti pole määratud, loetakse see nulliks ja ümardatakse lähima täisarvuni.

Süntaks

round(float_num, num_of_decimals)

parameetrid

  • ujukoma_number: Ujukarv, mida ümardada.
  • kümnendkohtade_arv: (valikuline) Kümnendkohtade arv, mida ümardamisel arvestada. See on valikuline ja kui seda pole määratud, on vaikimisi väärtuseks 0 ning ümardatakse lähima täisarvuni.

Kirjeldus

Meetod round() võtab vastu kaks argumenti:

  • ümardatav arv ja
  • kümnendkohad, mida ta peaks ümardamisel arvestama.

Teine argument on valikuline ja kui seda pole täpsustatud, on selle vaikeväärtus 0. Sellisel juhul ümardatakse tulemus lähima täisarvuni ja tagastustüübiks on samuti täisarv.

Kui komakohad ehk teine ​​argument on olemas, ümardub see antud kohtade arvuni. Tagastamise tüüp on ujuki.

Kui antud kümnendkoha järel olev arv on:

  • >= 5, siis lisatakse lõppväärtusele + 1.
  • < 5, siis tagastatakse lõppväärtus sellisena, nagu see on, kuni mainitud kümnendkohtadeni.

Tagastusväärtus

Kui kümnendkohtade_arv (num_of_decimals) pole antud, tagastatakse täisarv ja kümnendkohtade_arv (num_of_decimals) on antud, siis ujukoma. Pange tähele, et väärtus ümardatakse +1-ni, kui komajärgne väärtus on >= 5, vastasel juhul tagastatakse väärtus sellisena, nagu see on, kuni mainitud kümnendkohtadeni.

Kui palju võib ümardamine mõjutada? (Ümardamine vs kärpimine)

Parim näide ümardamise mõju illustreerimiseks on börsiturg. Varem, st aastal 1982, Vancouveri börs (VSE), mida kasutatakse aktsiaväärtuste kärpimiseks kolme kümnendkoha täpsusega iga tehingu puhul.

Seda tehti peaaegu 3000 korda iga päev. Kogunenud kärpimised viisid umbes 25 punkti kaotuseni kuus.

Allpool on näide väärtuste kärpimisest ümardamise suhtes.

Vaatleme allpool genereeritud ujukomaarve aktsiaväärtustena. Praegu genereerin neid 1 000 000 sekundi jooksul vahemikus 0.01 kuni 0.05.

Näited:

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

Ümardamise mõju demonstreerimiseks olen kirjutanud väikese koodijupi, kus alguses kasutate numbreid ainult kuni kolme kümnendkoha täpsusega, st kärbite arvu pärast kolme kümnendkohta.

Mul on olemas algne koguväärtus, kärbitud väärtustest tulenev koguväärtus ning algse ja kärbitud väärtuse vahe.

Sama numbrikomplekti puhul olen kasutanud round() meetodit kuni kolme kümnendkoha täpsusega ja arvutanud summa ning algväärtuse ja ümardatud väärtuse vahe.

Siin on näide ja väljund.

Näiteks 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)

Väljund:

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

Algse ja kärbitud väärtuse vahe on 499.9016193868665 ja funktsiooni round() põhjal on see 0.04661938686695066.

Erinevus tundub olevat väga suur ja näide näitab, kuidas round() meetod aitab arvutada peaaegu täpselt.

Näide: Ümardav ujuk Numbers

Selles programmis näeme, kuidas ujukomaarvude ümardamine toimib.

# 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))

Väljund:

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

Näide: täisarvu väärtuste ümardamine

Kui juhtub, et kasutate täisarvu puhul round(), tagastab see teile numbri ilma muudatusteta.

# testing round() on a integer

num = 15

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

Väljund:

The output is 15

Näide: ümardamine negatiivsele Numbers

Vaatame mõnda näidet, kuidas negatiivsete arvude ümardamine toimib.

# testing round()

num = -2.8
num1 = -1.5
print("The value after rounding is", round(num))
print("The value after rounding is", round(num1))

Väljund:

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

Näide: ümardatud NumPy massiivid

Kuidas sa NumPy-d ümardad? massiivid Python?

Selle lahendamiseks saame kasutada NumPy moodulit ja kasutada meetodit numpy.round() või numpy.around(), nagu on näidatud allolevas näites.

Numpy.round() kasutamine

# 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)

Väljund:

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

Samuti saame kasutada funktsiooni numpy.around(), mis annab sama tulemuse kui eespool näidatud numpy.round().

Näide: kümnendmoodul

Lisaks funktsioonile round() Python on kümnendmoodul, mis aitab kümnendarvude käsitlemisel täpsemalt toimida.

Kümnendsüsteemi moodul sisaldab ümardamistüüpe, nagu allpool näidatud:

  • ÜMARAD_LAED: see pöördub lõpmatuse poole.
  • ÜMARDUS_ALLA: see ümardab väärtuse nulli poole.
  • ÜMMARGUNE_KORRUS: see ümardub -lõpmatuse poole.
  • ÜMARDUS_POOL_ALLA: see ümardub lähima nullilähedase väärtuseni.
  • PAARIS_VORM_POOL: see ümardab lähima väärtuseni, liikudes lähima paarisarvuni.
  • ÜMARDUS_POOL_ÜLES: see ümardub lähima nullist eemalduva väärtuseni.
  • ÜMARDUS_ÜLES: see ümardub kohtades, kus väärtus nullist eemaldub.

Kümnendsüsteemis aitab meetod quantize() ümardada kindla arvu kümnendkohtadeni ja saate määrata kasutatava ümardamise, nagu on näidatud allolevas näites.

Näide: Kasutades ümara() ja kümnendkoha meetodeid

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)

Väljund:

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

KKK

Ei. Python 3 kasutab viikide puhul ümardamist pooleks paarisarvuks (panga ümardamine), seega round(0.5) on 0, round(2.5) on 2 ja round(3.5) on 4. See vähendab kumulatiivset kallutatust.

Kuna arvu 2.675 ei saa täpselt binaarses ujukomasüsteemis salvestada, hoitakse seda tegelikult umbes kujul 2.6749999999999998, siis ümardab round() allapoole. Täpsete tulemuste saamiseks kasutage decimal.Decimal('2.675').

Kasuta matemaatikamoodulit: math.ceil(x) ümardab alati ülespoole, math.floor(x) ümardab alati allapoole ja int(x) kärbib nulli poole. round() ise ei saa fikseeritud suunda sundida.

Esitage negatiivne teine ​​argument: round(12345, -1) annab tulemuseks 12340, round(12345, -2) annab tulemuseks 12300 ja round(12345, -3) annab tulemuseks 12000. Negatiivsed numbrid ümardavad koma vasakule.

round(x, 2) muudab hilisemas matemaatikas kasutatavat väärtust, samas kui f'{x:.2f}' ainult vormindab kuva ja jätab arvu puutumata. Arvutuste jaoks kasuta round() funktsiooni, väljundiks f-stringe.

Ei. Numbers on muutumatud, seega round() tagastab uue väärtuse sisendit muutmata. Määrake see, näiteks tulemus = round(3.14159, 2); algne muutuja säilitab täieliku täpsuse.

Masinõppe kood ümardab loetavate logide täpsuse, kao ja tõenäosuse väärtused ning kaardistab ennustused klassisiltidesse. Säilita gradientmatemaatika täielik täpsus ja ümarda ainult lõplikud kuvatavad mõõdikud.

Jah. Tehisintellekti assistendid, näiteks GitHub Copiloti automaatse täitmise funktsioonid round() ja np.round() ning kommentaari või funktsiooni nime kümnendkoha ümardamine, ja agenti tööriistad refaktoreerivad käsitsi vormindamise round() päringuteks, kuigi valitud täpsus vajab veel ülevaatamist.

Võta see postitus kokku järgmiselt: