Még pontosabb számítások a Pages, a Numbers és a Keynote alkalmazásban

Előfordulhat, hogy a Pages, a Numbers és a Keynote frissítése után kisebb változások tapasztalhatók a számítások vonatkozásában a dokumentumokban. Ennek az az oka, hogy frissült a számolómotor az iWork legújabb verziójában, aminek köszönhetően még pontosabbakká váltak az eredmények.

A legtöbb képlet esetén nem lesz érzékelhető eltérés, viszont a rendkívül kis számokat tartalmazó, illetve eredményező számítások esetén még pontosabb lesz a végeredmény.

1. példa

A Numbers, a Pages és a Keynote korábbi verzióiban a = 10,0 - 9,8 számítás például a 0,199999999999999 értéket eredményezte.

A cellában lévő tizedesek számának módosításával (1 és 14 tizedesjegy között) orvosolható a probléma, és megjelenítető a 0,2 érték. A cellában lévő tizedesek számának növelése esetén a 0,199999999999999000000000000000 érték jelenik meg.

Ennek oka az a módszer, ahogyan a tizedes számok tárolása történik a bináris számrendszerben. A tizedes számok bináris értékekre való átváltásakor kis mértékű eltérések keletkezhetnek. A Pages, a Numbers és a Keynote számolómotorja kifinomult technikákkal mindig is megkísérelte megakadályozni, hogy összeadódjanak az ilyen különbségek a számításokban, de ha rendkívül nagy mértékű pontosságra van szükség, az eltérések észrevehetők lehetnek.

Az új számolómotor pontossága drámaian javult az előző verziókhoz képest, mivel a számolómotor a számok decimális megfelelőjét használja a számításokban.

Így a fenti számítás (= 10,0 - 9,8) most már a 0,2 értéket eredményezi. A megjelenített tizedesek számának növelése esetén most már a 0,2000000000000000000000000000000 a kapott érték.

2. példa

A Numbers korábbi verzióiban a ROUND(8,415;2) képlet a 8,41 értéket eredményezte. Ennek is az értékek bináris számrendszerben való tárolási módja az oka.

Az új számolómotornak köszönhetően a ROUND(8,415;2) képlet eredménye most már 8,42.

A Binárisan kódolt tizedes és a Decimális lebegőpontos

A legtöbb számítógép a nulla és az egyes szám sorozataiként tárolja a számokat, amelyek bináris értékek. A Binárisan kódolt tizedes (Binary Coded Decimal – BCD) nevű kódolási eljárás a törteket bináris értékekké alakítja. A számok BCD segítségével történő kódolásakor néhány érték nem fejezhető ki teljes pontossággal. Például a 0,2 érték bináris formája a következő: 0,001100110011... (ez ismétlődik). Az értéket csonkolni kell, hogy a BCD segítségével kódolható legyen, aminek eredményeképpen kis mértékben mósodul a tárolt érték. Bár a BCD alkalmazása következtében fellépő eltérések rendkívül kis mértékűek, bizonyos típusú számítási folyamatok esetén az eltérések jelentősebbé válhatnak.

A Pages, a Numbers és a Keynote legújabb verziója a Decimális lebegőpontos (Decimal Floating Point – DFP) elnevezésű 128 bites kódolással kódolja a számokat. Így sokkal pontosabban kódolhatók a tizedes törtek, mivel elkerülhetők a BCD-féle kódolásra jellemző kerekítési hibák. Ezenkívül a frissített számolómotor közvetlenül a DFP segítségével kódolt számokkal dolgozik – a táblázatcellákban lévő értékeket pontosabban tárolja, és a képletek eredményét pontosabban számolja ki.

Számos képlet esetén nem lesz érzékelhető eltérés, viszont a rendkívül kis számokat tartalmazó, illetve eredményező számítások esetén még pontosabb lesz a végeredmény.

Közzététel dátuma: