Počet desetinných míst a zaokrouhlování

Nastavení počtu desetinných míst

V systému Groma lze nastavit pro různé typy údajů různý počet desetinných míst.

Základní nastavení počtu desetinných míst, společné pro celý systém, je v SouborNastaveníVstup/Výstup. Tímto nastavením se řídí všechny seznamy (pokud nemají explicitně nastaven jiný počet desetinných míst), dialogová okna, výstupy do protokolu, a další.

Dále je možno nastavit počet desetinných míst samostatně pro konkrétní seznam souřadnic. Toto nastavení se dělá příkazem SouborInformace o souboru. Pokud v tomto okně bude ponechán počet desetinných míst nenastavený (editační okénko zůstane prázdné), bude použita hodnota z globálního nastavení aplikace. Pokud zde bude počet desetinných míst nastaven, bude mít toto nastavení před globálním nastavením přednost.

Seznamy interně umožňují ukládat větší počet desetinných míst, než je zobrazený. Při změně počtu zobrazených desetinných míst tedy není přesnost údajů v seznamech ovlivněna. Toto pravidlo má ale dvě výjimky:

  1. Všechny číselné údaje, které do výpočtů vstupují přes výpočetní dialogová okna, jsou automaticky zaokrouhleny tím, že jsou přebírány hodnoty zobrazené v dialogových oknech na daný počet desetinných míst.

    Důležité

    Tato vlastnost by mohla způsobit malé rozdíly ve výsledcích dávkových a jednotlivých výpočtů. Rozpory by se mohly projevit například mezi polární metodou a polární metodou dávkou. Standardní polární metoda pro jednotlivé body přebírá vstupní hodnoty z dialogových oken, zatímco polární metoda dávkou je přebírá přímo ze seznamů souřadnic a měření. Pokud si přejete, aby obě metody dávaly vždy identické výsledky i na posledním desetinném místě, lze toho docílit zapnutím automatického zaokrouhlování hodnot vstupujících do výpočtů. Toto lze nastavit v dialogovém okně SouborNastaveníVýpočty pomocí přepínače Zaokrouhlovat vstupní hodnoty, a výsledkem bude to, že veškeré vstupní hodnoty i do dávkových výpočtů budou nejprve zaokrouhleny na nastavený počet desetinných míst.

  2. Záznamy, které jsou vkládány do seznamů například kopírováním nebo přetahováním z jiných seznamů, mohou být při vkládání zaokrouhleny, pokud je zapnuto automatické zaokrouhlování souřadnic vkládaných do seznamů (SouborNastaveníVstup/Výstup, přepínač Zaokrouhlovat souřadnice dle nastaveného počtu desetinných míst.

Chyba z dvojího zaokrouhlení

Při reprezentaci výsledků numerických výpočtů (pomíjíme zde chyby vlastního numerického výpočtu a chyby z nepřesného zobrazení čísla v pohyblivé řádové čárce, které ovšem také mohou způsobit problémy, a hovoříme pouze o reprezentaci výsledné vypočtené hodnoty) z principu vždy dochází k chybě ze zaokrouhlení tím, že výslednou hodnotu zobrazujeme s omezenou přesností (omezeným počtem desetinných míst).

Pro zaokrouhlení numerických hodnot existují pravidla, která zaručují, že absolutní hodnota chyby ze zaokrouhlení nepřesáhne velikost 1/2 jednotky posledního zobrazovaného řádu. Při zaokrouhlení na setiny tedy absolutní hodnota chyby ze zaokrouhlení nepřesáhne hodnotu 0.005 (může však v krajním případě této hodnoty dosáhnout). Jinými slovy, chyba ze zaokrouhlení se v tomto případě pohybuje v intervalu <-0.005, 0.005>. Při zaokrouhlování nahoru, které se standardně využívá, se chyba ze zaokrouhlení pohybuje v intervalu (-0.005, 0.005>.

Při zaokrouhlování existuje ale další riziko, které na první pohled tak zjevné není, a tím je chyba z dvojího zaokrouhlení. Této chyby se v některých případech dopustíme tím, že zaokrouhlíme číselnou hodnotu dvakrát, nejprve na větší počet desetinných míst, a potom na menší.

Zaokrouhlíme-li např. hodnotu 1.496 nejprve na dvě desetinná místa, a potom na jednotky, dostaneme postupně hodnoty 1.50 a 2, přitom při přímém zaokrouhlení na jednotky bychom dostali hodnotu 1. Tím jsme se dopustili chyby ze zaokrouhlení velikosti 0.504, tedy mimo interval, do něhož by se chyba ze zaokrouhlení měla vejít. Je zřejmé, že zaokrouhlit hodnotu 1.496 na 2 je chyba, protože přesná hodnota je blíže hodnotě 1.

Při opakovaném zaokrouhlování je tedy vždy třeba zaokrouhlovat původní hodnotu, nikoli postupně zaokrouhlovat hodnotu již zaokrouhlenou.

Další numerické důsledky zaokrouhlení

Kromě výše uvedeného může mít zaokrouhlování i další důsledky, které mohou na první pohled vypadat jako chyby ve výpočtu, ale ve skutečnosti tomu tak není. Jedním z nich je například to, že promítneme-li bod na přímku (například v úloze Vyrovnání na přímku, a vypočteme-li vzdálenost vyrovnaného bodu od přímky, může se v některých konfiguracích stát, že vzdálenost vyjde nenulová (ale neměla by překročit velikost jedné jednotky posledního desetinného místa). Při zaokrouhlení na centimetry tedy může vzdálenost vyrovnaného bodu od přímky být 0.01m, a přesto je výpočet správně. Podrobnější vysvětlení naleznete v poznámkách u úlohy Vyrovnání na přímku