Slovo "zaokrúhľovanie" pre číselnú hodnotu znamená jej nahradenie inou hodnotou, ktorá je približne rovnaká, ale má kratší, jednoduchší alebo jednoznačnejší tvar. Napríklad 23,74 USD by sa dalo zaokrúhliť na 24 USD, alebo zlomok 312/937 by sa dal zaokrúhliť na 1/3, alebo výraz 2 {\displaystyle {\sqrt {2}} ako 1,41 (ak sa zaokrúhľuje na dve desatinné miesta). Zaokrúhľovanie teda zjednodušuje zápis a uľahčuje ďalšie spracovanie hodnôt.
Zaokrúhľovanie sa často vykonáva zámerne, aby sa získala hodnota, ktorá sa ľahšie zapisuje a spracúva ako pôvodná hodnota. Zaokrúhľovanie sa môže vykonávať aj na označenie presnosti vypočítaného čísla; napríklad množstvo, ktoré bolo vypočítané ako 123 456, ale o ktorom sa vie, že je presné len s presnosťou niekoľkých stoviek jednotiek, je lepšie uviesť ako "približne 123 500". Rôzne odvetvia majú vlastné pravidlá: v účtovníctve a bankovníctve sú bežné pevné pravidlá zaokrúhľovania, pri publikovaní výsledkov veda a technika sa používa zaokrúhľovanie podľa počtu významných číslic, v programovaní sa volia režimy podľa IEEE 754 alebo podľa účelu (napr. finančné knižnice často používajú desiatkové typy alebo celočíselné ukladanie v centoch).
Metódy a režimy zaokrúhľovania
- Zaokrúhľovanie na najbližšiu hodnotu (round to nearest) – bežný spôsob, kde sa hodnota posúva k najbližšej povolenej hodnote. Pri rovnej vzdialenosti existujú rôzne pravidlá (tie-break):
- round half up (polovicu zaokrúhliť nahor): 2,5 → 3
- round half down (polovicu zaokrúhliť nadol): 2,5 → 2
- round half to even (bankerské zaokrúhľovanie): 2,5 → 2, 3,5 → 4 — pri rovnosti sa zaokrúhli tak, aby výsledné číslo bolo párne
- round half away from zero (pri rovnosti oddialiť od nuly): −2,5 → −3
- Zaokrúhľovanie k nule (truncate, round toward zero) – odstraňuje zlomkovú časť, napr. 2,9 → 2, −2,9 → −2.
- Zaokrúhľovanie smerom nadol (floor) – výber najväčšieho celého čísla ≤ hodnoty (2,9 → 2, −2,1 → −3).
- Zaokrúhľovanie smerom nahor (ceil) – výber najmenšieho celého čísla ≥ hodnoty (2,1 → 3).
- Stochastické zaokrúhľovanie – pri rovnej vzdialenosti alebo všeobecne sa rozhoduje náhodne s pravdepodobnosťou úmernou vzdialenosti; používa sa v niektorých numerických a strojových metódach na zníženie systematickej chyby.
- Intervalové a správne (exact) zaokrúhľovanie – používa sa pri výpočtoch, kde je potrebné garantovať, že zaokrúhlený výsledok je správny vzhľadom na matematický výsledok (napr. správne zaokrúhlenie transcendentrych funkcií).
Formálne definície a príklady
Zaokrúhľovanie na k desatinných miest znamená v podstate vynásobenie číslom 10^k, zaokrúhlenie na celé číslo podľa zvoleného režimu a následné vydelenie 10^k. Napríklad zaokrúhlenie 1,41421356 na dve desatinné miesta (režim "na najbližšiu") dáva 1,41 (pretože tretia desatina je 4, menšia než 5). Zaokrúhlenie 23,74 na celé číslo dá 24 (keďže .74 ≥ .5).
Pre praktické použitie sú užitočné dve veličiny definujúce chybu zaokrúhľovania:
- Absolútna chyba = |x − x_zaokrúhlené|. Pri zaokrúhľovaní na jednotku u (napr. 0,01 pri dvoch desatinách) je maximálna absolútna chyba u/2 (pri režime "round to nearest").
- Relatívna chyba = |x − x_zaokrúhlené| / |x| (ak |x| ≠ 0). Pri veľkých aj malých číslach môže relatívna chyba významne rásť.
Chyby zaokrúhľovania a ich dôsledky
Na druhej strane zaokrúhľovanie môže do výsledku vniesť určitú zaokrúhľovaciu chybu. Zaokrúhľovaniu sa takmer nedá vyhnúť pri mnohých výpočtoch, najmä pri delení dvoch čísel v celočíselnej aritmetike alebo aritmetike s pevnou desatinnou čiarkou, pri výpočte matematických funkcií, ako sú odmocniny, logaritmy a sínusy, alebo pri použití reprezentácie s pohyblivoudesatinnou čiarkou s pevným počtom významných číslic. V postupnosti výpočtov sa tieto zaokrúhľovacie chyby spravidla hromadia a v určitých "zle nastavených" prípadoch potom môžu spôsobiť, že výsledok stratí zmysel.
Typické problémy v numerike sú:
- Akumulácia chýb: opakované zaokrúhľovanie (napr. pri sčítaní veľkého počtu čísel) môže viesť k rastu kumulatívnej chyby. Na zníženie tohto efektu sa používajú stabilné algoritmy, napr. Kahanovo sčítanie.
- Strata významnosti (catastrophic cancellation): pri odčítaní dvoch blízkych veľkých čísel sa vedecké platné cifry môžu vyrušiť a relatívna chyba výsledku výrazne vzrastie.
- Chyby zaokrúhľovania v iteráciách: pri iteratívnych algoritmoch môžu malé chyby rásť exponenciálne, ak je algoritmus numericky nestabilný.
Dilema tvorcu tabuliek (table-maker's dilemma)
Presné zaokrúhľovanie transcendentných matematických funkcií je náročné, pretože počet dodatočných číslic, ktoré je potrebné vypočítať na rozhodnutie, či sa má zaokrúhľovať nahor alebo nadol, nemožno vopred poznať. Tento problém je známy ako "dilema tvorcu tabuliek". V praxi to znamená, že pri výpočte napr. sin(x) alebo exp(x) na n desatinných miest musíme často vypočítať výrazne viac než n vnútorných číslic, aby sme sa uistili, ako správne zaokrúhliť konečný výsledok. Riešenia zahŕňajú intervalové výpočty, používanie vyššej presnosti (guard digits) alebo algoritmy so zárukou správneho zaokrúhlenia.
Zaokrúhľovanie v počítačoch a IEEE 754
V počítačoch sa bežne používajú formáty pohyblivej desatinnej čiarky (floating point), kde je reprezentácia obmedzená počtom bitov pre mantisu. Štandard IEEE 754 definuje niekoľko režimov zaokrúhľovania (to nearest, toward zero, toward +inf, toward −inf) a odporúča banker's rounding pre zníženie systematickej chyby. Pretože binárna reprezentácia nemôže presne vyjadriť väčšinu desatinných hodnôt, zaokrúhľovací efekt je všadeprítomný. Pre finančné aplikácie sa preto často uprednostňujú desiatkové datové typy alebo celočíselné ukladanie v najmenších menových jednotkách (napr. centy), aby sa predišlo problémom s binárnym zaokrúhľovaním.
Využitie zaokrúhľovania a kvantizácie
Zaokrúhľovanie má mnoho podobností s kvantovaním, ktoré sa vyskytuje, keď sa fyzikálne veličiny musia kódovať číslami alebo digitálnymi signálmi. Pri prevode analógového signálu na digitálny (A/D konverzia) sa kontinuálna amplitúda mapuje na diskrétne úrovne – to je práve kvantizácia a vedie ku kvantizačnému šumu. V oboch prípadoch platí, že voľba stupnice (krokovej veľkosti) a režimu zaokrúhľovania ovplyvnia chybu a vlastnosti výsledku.
Praktické odporúčania
- Pokiaľ je to možné, vyhnite sa zbytočnému zaokrúhľovaniu v priebehu medzivýpočtov — odložte zaokrúhľovanie až na koniec a pracujte s vyššou presnosťou vnútorných výpočtov.
- Pre finančné aplikácie používajte desiatkové dátové typy alebo celistvé ukladanie v najmenších jednotkách (centy), aby ste sa vyhli chybám pri binárnom zaokrúhľovaní.
- Pri sumarizácii veľkého počtu čísel zvážte používanie kompenzovaných algoritmov (Kahan, pairwise summation) na zníženie akumulácie chýb.
- Ak potrebujete matematické funkcie so zaručeným správnym zaokrúhlením, používajte knižnice, ktoré to podporujú, alebo výpočty v presnejšej aritmetike (vyššia presnosť, intervalová aritmetika).
Zaokrúhľovanie je neoddeliteľná súčasť numerických výpočtov i praktickej práce s číslami. Správne pochopenie režimov zaokrúhľovania, veľkosti chýb a ich vplyvu na výsledky pomáha minimalizovať nežiadúce dôsledky a zvoliť vhodnú stratégiu pre konkrétny problém.