Slovo "zaokrouhlení" pro číselnou hodnotu znamená její nahrazení jinou hodnotou, která je přibližně stejná, ale má kratší, jednodušší nebo jednoznačnější tvar. Například 23,74 USD lze zaokrouhlit na 24 USD nebo zlomek 312/937 lze zaokrouhlit na 1/3 nebo výraz 2 {\displaystyle {\sqrt {2}} jako 1,41. Zaokrouhlením obvykle snižujeme počet desetinných míst nebo významných číslic tak, aby byla hodnota snadněji čitelná nebo zpracovatelná.
Zaokrouhlování se často provádí záměrně, aby se získala hodnota, která se snadněji zapisuje a zpracovává než původní hodnota. Může být také použito k označení přesnosti vypočteného čísla; například množství, které bylo vypočteno jako 123 456, ale o němž je známo, že je přesné pouze s přesností na několik set jednotek, je lépe uvést jako "přibližně 123 500". Při uvádění výsledků je dobré vždy doplnit, zda se jedná o zaokrouhlení na určitý počet desetinných míst, nebo na určitý počet významných číslic, protože obě interpretace dávají odlišné hodnoty.
Na druhou stranu zaokrouhlování může do výsledku vnést určitou zaokrouhlovací chybu. Zaokrouhlování je téměř nevyhnutelné při mnoha výpočtech, zejména při dělení dvou čísel v celočíselné aritmetice nebo aritmetice s pevnou řádovou čárkou, při výpočtech matematických funkcí, jako jsou odmocniny, logaritmy a sinusy, nebo při použití reprezentace s pohyblivouřádovou čárkou s pevným počtem významných číslic. V posloupnosti výpočtů se tyto zaokrouhlovací chyby obecně kumulují a v určitých "špatně podmíněných" případech pak mohou způsobit, že výsledek ztratí smysl.
Metody zaokrouhlování
- Zaokrouhlování na nejbližší (round-to-nearest): běžná metoda, kdy se číslo posune na nejbližší povolenou hodnotu. Pokud je vzdálenost shodná (tzv. půlový případ), existují různé pravidla (viz níže).
- Zaokrouhlení nahoru (ceiling): vždy se zaokrouhluje na nejbližší větší hodnotu (směr +∞).
- Zaokrouhlení dolů (floor): vždy se zaokrouhluje na nejbližší menší hodnotu (směr −∞).
- Ořezání (trunkace): odstraní se číslice za daným místem bez další úpravy (ekvivalent zaokrouhlení směrem k nule).
- Zaokrouhlení na významné cifry: upravuje počet významných číslic, důležité při měření a vědeckém zápisu.
- Pravidla pro půlové případy (tie-breaking):
- half-up (polovina nahoru): 2,5 → 3
- half-down (polovina dolů): 2,5 → 2
- half-away-from-zero (polovina pryč od nuly): 2,5 → 3, −2,5 → −3
- half-to-even (bankéřské zaokrouhlení): 2,5 → 2 (do sudé), 3,5 → 4 — snižuje systematické zkreslení při opakovaném zaokrouhlování.
Matematické vlastnosti chyby při zaokrouhlování
Při zaokrouhlení na určitý krok (ulp — unit in the last place) platí, že absolutní chyba je nejvýše polovina kroku. Například při zaokrouhlování na k desetinných míst je maximální absolutní chyba ≤ 0,5·10^(−k). Pro zaokrouhlení na n významných číslic je maximální relativní chyba přibližně ≤ 0,5·10^(1−n). Tyto horní odhady jsou užitečné pro odhadování dopadu zaokrouhlování na výsledky výpočtů.
Zaokrouhlování v numerických výpočtech a IEEE 754
Přesné zaokrouhlování transcendentních matematických funkcí je obtížné, protože počet dalších číslic, které je třeba vypočítat, aby bylo možné rozhodnout, zda zaokrouhlovat nahoru nebo dolů, nelze předem znát. Tento problém je znám jako "dilema tvůrce tabulky" (níže). V praxi algoritmy pro výpočet funkcí (exp, log, sin, atd.) provádějí výpočty s dodatečnou přesností a potom rozhodnou o správném zaokrouhlení.
Standard IEEE 754 pro aritmetiku s pohyblivou řádovou čárkou definuje několik režimů zaokrouhlování: přibližně k nejbližší hodnotě (obvykle "ties to even"), směrem k nule, směrem k +∞ a směrem k −∞. Volba režimu ovlivní chování při půlových případech a tím i kumulativní chování chyb v algoritmech.
Kumulace chyb a numerická stabilita
Opakované zaokrouhlování v posloupnosti operací vede ke kumulaci chyb. Důležité pojmy jsou:
- Chování problému (conditioning): opatření, jak moc se výsledek změní při malé změně vstupu. Špatně podmíněné problémy zesilují chyby.
- Numerická stabilita: vlastnost algoritmu, která říká, zda malá zaokrouhlovací chyba zůstane malá v průběhu výpočtu. Stabilní algoritmy minimalizují šíření chyb.
Praktické techniky ke snížení vlivu zaokrouhlovacích chyb zahrnují:
- použití vyšší vnitřní přesnosti (více bitek),
- reformulaci algoritmů (např. vyhnout se odčítání podobných čísel),
- Kahanovo sčítání (compensated summation) pro snížení chyby při součtech velkého počtu čísel,
- použití aritmetiky s pevnou nebo dekadickou čárkou v účetnictví (aby se zabránilo chybám způsobeným binární reprezentací desetinných čísel).
Praktické aspekty a doporučení
- V účetnictví a financích se doporučuje pracovat s celočíselnými jednotkami (centy) nebo s dekadickou aritmetikou, aby se předešlo problémům s binární reprezentací desetinných čísel.
- Při prezentaci výsledků uveďte počet platných číslic nebo chybu (interval spolehlivosti), aby bylo jasné, jak přesné číslo je.
- Při programování si zkontrolujte, jaká je výchozí metoda zaokrouhlování v jazyce/knihovně (např. round v různých jazycích může implementovat jiná pravidla pro půlové případy).
- Pro zvýšení přesnosti výpočtů se často používá provedení výpočtu ve vyšší přesnosti a až nakonec zaokrouhlení výsledku na požadovaný počet cifr.
Zaokrouhlování a kvantizace
Zaokrouhlování má mnoho podobností s kvantizací, ke které dochází při kódování fyzikálních veličin čísly nebo digitálními signály. Kvantizace se zabývá převodem spojitého signálu na diskrétní množinu hodnot a typicky zavádí kvantizační šum. Stejně jako u zaokrouhlování i zde platí, že volba pravidla (např. náhodné zaokrouhlení na střed) může ovlivnit průměrné zkreslení a rozložení chyb.
Tabulkový tvůrčí problém (Table-maker's dilemma)
Dilema tvůrce tabulky se týká problému, že pro některé transcendentalní funkce nelze dopředu určit, kolik dodatčných číslic je nutné spočítat, aby bylo možno rozhodnout o správném zaokrouhlení výsledku na zadaný počet číslic. Implementace musí spočítat další číslice, až dokud není rozhodnutí jednoznačné — což může být výpočetně náročné.
Příklady
- Zaokrouhlení 2,345 na 2 desetinná místa:
- half-up: 2,345 → 2,35
- half-to-even: 2,345 → 2,34 (protože 2,34 má sudou druhou desetinnou číslici)
- Při sčítání 1 000 000 + 0,123456 s plovoucí čárkou s omezeným počtem platných cifer může menší člen zmizet kvůli zaokrouhlování (loss of significance).
- Pro relativní chybu při zaokrouhlení na 3 významné cifry platí přibližně: relativní chyba ≤ 0,5·10^(1−3) = 0,005 = 0,5 %.
Zaokrouhlování je jednoduchý koncept s dalekosáhlými důsledky v numerice, měřeních a programování. Správný výběr metody a vědomí možných chyb pomáhá minimalizovat nežádoucí efekty a zajistit interpretovatelnější výsledky.