Přesnost výpočtů v LibreOffice

Inherentní problém s přesností

LibreOffice Calc, stejně jako většina ostatních tabulkových procesorů, používá na hardwaru závisející možnosti výpočtů s čísly s plovoucí desetinou čárkou. Většina moderního hardwaru využívá binární aritmetiku s plovoucí desetinnou čárkou s omezenou přesností definovanou standardem IEEE 754, nelze v aplikaci LibreOffice Calc (která interně používá 64bitová čísla s dvojitou přesností) přesně vyjádřit mnoho desetinných čísel, včetně tak jednoduchých jako například 0,1.

Výpočty s těmito čísly nutně vedou k chybám zaokrouhlování a ty se při výpočtech hromadí.

Nejedná se o chybu softwaru ani o nic neočekávaného, čemu by se dalo v současnosti vyhnout, aniž bychom museli používat složité softwarové výpočty, které by si kladly nepřijatelně neúměrné nároky na výkon. Je třeba, aby s tímto chováním uživatelé počítali a v případě nutnosti používali zaokrouhlování nebo porovnání s hodnotou epsilon, vyjadřující relativní velikost chyby.

Příklad s čísly:

A

1

31000.99

2

32000.12

3

=A1-A2


Výsledkem bude -999,129999999997 v buňce A3 namísto očekávaných -999,13 (možná budete muset zvýšit počet zobrazených desetinných míst ve formátu buňky, abyste uvedený výsledek uviděli).

Podpořte nás!