Informace o přesnějších výpočtech v Pages, Numbers a Keynote

Po aktualizaci Pages, Numbers a Keynote můžete zaznamenat drobné změny u výsledků výpočtů ve vašich dokumentech. Důvodem je, že nejnovější verze iWork obsahuje aktualizaci výpočetního enginu, který generuje přesnější výsledky než dřív.

U většiny vzorců nezaznamenáte žádný viditelný rozdíl, ale výpočty, které používají nebo jejichž výsledkem jsou extrémně malá čísla, teď můžou zobrazovat výsledné hodnoty s ještě větší přesností.

Příklad 1

V předchozích verzích Numbers, Pages a Keynote byla výsledkem výpočtu jako = 10,0 - 9,8 hodnota 0,199999999999999.

Tento problém se dá vyřešit úpravou počtu zobrazených desetinných míst v buňce (1 až 14 desetinných míst), aby se ukázal očekávaný výsledek 0,2. Po zvýšení počtu zobrazených desetinných míst se v buňce zobrazí 0,199999999999999000000000000000.

Důvodem je způsob, jakým dvojková soustava interně uchovává desítková čísla. Dvojková reprezentace desítkových čísel může způsobovat nepatrné nesrovnalosti. Výpočetní engin v Pages, Numbers a Keynote vždycky využíval sofistikované techniky, aby se tyto nesrovnalosti ve výpočtech nekumulovaly, ale při velmi vysokých přesnostech se přece jenom můžou projevit.

Nový výpočetní engin je oproti přechozím verzím výrazně vylepšený a v průběhu výpočtu používá čísla v jejich desítkové reprezentaci.

Výsledkem je, že stejný výpočet = 10,0 - 9,8 teď vrátí hodnotu 0,2. Po zvýšení počtu zobrazených desetinných míst se teď ukáže hodnota 0,2000000000000000000000000000000.

Příklad 2

V předchozích verzích Numbers vzorec ROUND(8,415;2) vrátí hodnotu 8,41. K tomuto problému taky dochází kvůli způsobu, jakým jsou hodnoty interně uchovávány ve dvojkové soustavě.

Nový výpočetní engin pro vzorec ROUND(8,415;2) vrátí 8,42.

Dvojkově reprezentované desítkové číslo versus kódování čísel s plovoucí desetinnou čárkou

Většina počítačů uchovává čísla jako řadu jedniček a nul, to znamená jako binární (dvojkové) hodnoty. Proces kódování nazývaný Dvojkově reprezentované desítkové číslo, zkráceně BCD (Binary Coded Decimal), převádí desetinná čísla na jejich dvojkové protějšky. Když jsou čísla kódována pomocí BCD, některé hodnoty nejde reprezentovat s úplnou přesností. Například 0,2 ve dvojkovém formátu vypadá takto: 0,001100110011... (periodických). Aby šlo tuto hodnotu zakódovat pomocí BCD, musí být zkrácena, což ji nepatrně změní. Přestože můžou být nesrovnalosti způsobené kódováním BCD velmi malé, určité typy výpočetních řetězců je můžou umocnit, takže začnou být patrné.

Nejnovější verze Pages, Numbers a Keynote čísla kódují pomocí 128bitového kódování s plovoucí desetinnou čárkou, zkráceně DFP (Decimal Floating Point). Jedná se o mnohem přesnější způsob kódování desetinných čísel, který eliminuje zaokrouhlovací chyby typické pro kódování BCD. Aktualizovaný výpočetní engin navíc pracuje přímo s čísly kódovanými pomocí DFP – hodnoty uložené v buňkách jsou mnohem přesnější, takže jsou přesnější i výsledky vypočítaných vzorců.

U hodně vzorců nezaznamenáte žádný viditelný rozdíl, ale výpočty, které používají nebo jejichž výsledkem jsou extrémně malá čísla, teď můžou zobrazovat výsledné hodnoty s ještě větší přesností.

Datum zveřejnění: