1. Pythoni round()
funktsiooni põhitõed
round()
funktsiooni ülevaade
Pythonis on round()
funktsioon põhiline tööriist arvude ümardamiseks. Seda kasutatakse peamiselt selleks, et määrata, mitu kohta pärast koma tuleks number ümardada. See võimaldab andmete kuvamist või arvutustulemusi lihtsalt kohandada.
Põhisüntaks
round(number[, ndigits])
- number: Ümardatav arv.
- ndigits: Kohtade arv pärast koma (valikuline). Kui see jäetakse määramata, ümardatakse täisarvuni.
Näited kasutamisest
print(round(3.14159)) # Tulemus: 3
print(round(3.14159, 2)) # Tulemus: 3.14
print(round(1.5)) # Tulemus: 2
Nagu näha, saab round()
funktsiooniga ümardada soovitud komakohani, ja kui ndigits
pole määratud, ümardatakse täisarvuni.

2. Pythonis ümardamise meetod: “panganduslik ümardamine”
Mis on panganduslik ümardamine?
Pythonis kasutab round()
funktsioon “panganduslikku ümardamist” (Banker’s Rounding). See tähendab, et kui komakoht on täpselt 0.5, ümardatakse lähima paarisarvuni. Näiteks 2.5
ümardatakse 2
-ks ja 3.5
ümardatakse 4
-ks. Seda meetodit kasutatakse statistikas ja finantsarvutustes, et vältida andmete kallutatust.
Pangandusliku ümardamise näited
print(round(2.5)) # Tulemus: 2
print(round(3.5)) # Tulemus: 4
Nagu näha, kui komakoht on 0.5, ümardatakse alati paarisarvuni, mis aitab vältida kumulatiivseid vigu.
Pangandusliku ümardamise eelised
See meetod aitab vähendada lihtsa üles- või allapoole ümardamisega tekkivaid kumulatiivseid vigu. Eriti kasulik on see suurte andmekogumite töötlemisel, et hoida üldine tasakaal.
3. Ujukomaarvude probleemid
Ujukomaarvude sisemine esitus ja vead
Pythonis esitatakse ujukomaarve kahendsüsteemis. Selle tõttu ei pruugi kümnendsüsteemi arvud olla täpselt esitatavad, ning ümardamisel võib tekkida ootamatuid tulemusi. Eriti, kui arv ei ole sisemiselt täpselt esitatav, võib round()
funktsiooni tulemus olla ootamatu.
Ujukomaarvude probleemide näide
n = 3.15
print(round(n, 1)) # Tulemus: 3.1 (oodatud oleks 3.2)
Selles näites esitatakse 3.15
sisemiselt kui 3.149999...
, mistõttu tulemus ei vasta ootustele. See tuleneb ujukomaarvude piirangutest.
Miks tekivad ujukomaarvude vead?
Ujukomaarvud esitatakse kahendsüsteemis ja sellised arvud nagu 1.15 või 3.15 ei ole täpselt esitatavad. Seetõttu võivad ümardamisel tekkida vead. Nende probleemide vältimiseks on soovitatav kasutada suure täpsusega arvutusi, näiteks decimal
mooduli abil, millest räägitakse järgmises osas.

4. Täpsuse tagamine decimal
mooduliga
decimal
mooduli ülevaade
decimal
mooduli kasutamine võimaldab vältida ujukomaarvude vigu ja teha kõrge täpsusega arvutusi. See on eriti kasulik finants- ja teadusarvutustes, kus on vaja täpseid tulemusi.
Näide kasutamisest
from decimal import Decimal, ROUND_HALF_UP
n = Decimal('3.15')
print(n.quantize(Decimal('0.1'), rounding=ROUND_HALF_UP)) # Tulemus: 3.2
Decimal
klassi kasutatakse ujukomavea vältimiseks ja täpsete arvutuste tegemiseks. ROUND_HALF_UP
käitub nagu tavapärane ümardamine.
Muud ümardamise režiimid
decimal
moodulil on mitmeid ümardamisrežiime. Näiteks:
- ROUND_DOWN: Alati ümardab allapoole.
- ROUND_CEILING: Positiivsed arvud ümardatakse üles, negatiivsed arvud alla.
- ROUND_FLOOR: Alati ümardab alla (ka negatiivsed arvud).
Nende režiimidega on võimalik paindlikult valida sobiv ümardamisviis vastavalt kasutusvaldkonnale.
5. Muud ümardamise viisid: math.floor()
ja math.ceil()
math.floor()
: Allapoole ümardamine
math.floor()
funktsioon ümardab väärtuse alati lähima väiksema täisarvuni. Negatiivsete arvude puhul ümardatakse samuti allapoole.
import math
print(math.floor(3.9)) # Tulemus: 3
math.ceil()
: Ülespoole ümardamine
math.ceil()
funktsioon ümardab alati ülespoole.
import math
print(math.ceil(3.1)) # Tulemus: 4
Erinevused round()
funktsiooniga
round()
ümardab lähima täisarvuni, kuid math.floor()
ja math.ceil()
funktsioonid ümardavad alati kindlas suunas, mis teeb tulemused etteaimatavaks. Kui on vaja korrektselt ümardada negatiivseid arve, võivad need funktsioonid olla kasulikud.

6. Praktilised kasutusnäited
Rakendused valuutaarvutustes
Valuutaarvutustes on vaja kõrge täpsusega tulemusi. Näiteks kogusummade või allahindluste arvutamisel aitab decimal
moodul leida täpse väärtuse.
from decimal import Decimal, ROUND_HALF_UP
price = Decimal('19.995')
print(price.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)) # Tulemus: 20.00
Rakendused teaduslikes arvutustes
Teaduslikes arvutustes võivad ujukomaarvude vead olla probleemiks, seega on decimal
mooduli kasutamine täpsete arvutuste tegemiseks oluline. See aitab mõõtetulemusi ja eksperimentaalseid andmeid täpselt esitada.
Rakendused andmeanalüüsis
Andmeanalüüsis on samuti oluline, et numbreid ümardatakse õigesti, et vältida vigade kuhjumist. Statistiliste või suurte andmekogumite töötlemisel aitavad decimal
ja round()
täpset tulemust saada.
7. Kokkuvõte
Pythonis on round()
funktsioon mugav tööriist komakohtade ümardamiseks, kuid ujukomaarvude täpsuse osas tuleb olla tähelepanelik. Kui on vaja täpset tulemust, näiteks finants- või teadusarvutustes, tuleks kasutada decimal
moodulit. Samuti tasub mõista ja kasutada math.floor()
ja math.ceil()
funktsioone, et valida vastavalt vajadusele kõige sobivam ümardamisviis.