目次
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: 2Nagu 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 kasutabround() 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: 4Nagu 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õibround() 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äiteksdecimal 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.2Decimal 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).
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: 3math.ceil(): Ülespoole ümardamine
math.ceil() funktsioon ümardab alati ülespoole.import math
print(math.ceil(3.1)) # Tulemus: 4Erinevused 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 aitabdecimal 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.00Rakendused teaduslikes arvutustes
Teaduslikes arvutustes võivad ujukomaarvude vead olla probleemiks, seega ondecimal 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 aitavaddecimal ja round() täpset tulemust saada.7. Kokkuvõte
Pythonis onround() 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.



