Tablora

Tablora · Knihovna

Zkontrolujte 0.10 plus 0.20 přesnou desetinnou aritmetikou

Ověřte, že 0.10 plus 0.20 dává v desetinné aritmetice přesně 0.30, a porovnávejte uvedený součet bez artefaktů zobrazení čísel s plovoucí čárkou.

Proč může 0.1 plus 0.2 vypadat špatně

Mnoho programů ukládá čísla v binární plovoucí čárce, kde 0.1 a 0.2 nemají přesnou reprezentaci. Sečtěte je a uložený výsledek je nepatrně nad 0.3; podle formátování můžete vidět 0.30000000000000004 nebo porovnání, které tvrdí, že se hodnoty nerovnají. Při odsouhlasení takový artefakt vypadá jako nesoulad, který ve skutečnosti neexistuje.

Kontrola desetinného součtu se mu vyhne. Každou hodnotu čte jako desetinný řetězec, všechny hodnoty převede na stejný počet desetinných míst a sečte je jako celá čísla, takže 0.10 a 0.20 dají přesně 0.30.

Zadání řádků

Výsledek pro 0.10 a 0.20

S hodnotami 0.10 a 0.20 a s Očekávaný součet 0.30 je Vypočtený součet 0.30, Rozdíl 0.00 a Součty se shodují ukazuje Ano. Výsledek má dvě desetinná místa, protože jde o největší počet míst mezi vstupy a očekávaným součtem.

Rozdíl je vždy Vypočtený součet minus Očekávaný součet, takže záporný rozdíl znamená, že zadané řádky na uvedené číslo nedosahují.

Příprava hodnot ze skutečné tabulky

Částky zkopírované z výpisu jen zřídka přijdou v kanonickém tvaru. Sloupec nejprve prožente normalizátorem čísel s desetinným oddělovačem a oddělovačem skupin, které používá dokument, a převedené hodnoty pak zkopírujte do kontroly. Hodnota, kterou normalizátor zadržel ke kontrole, ještě do součtu nepatří; vyřešte ji, než součtu uvěříte.

Kontrola provádí přesnou aritmetiku nad tím, co zadáte, a nic víc. Nepřepočítává měny, nepoužívá daňová ani zaokrouhlovací pravidla a neřekne vám, zda byly zadány všechny záznamy.

Vstupy, které kontrola odmítne

Vstupy

Jedna hodnota na řádek
0.10 0.20
Očekávaný součet
0.30

Výsledky

Vypočtený součet
0.30
Rozdíl
0.00
Součty se shodují
Ano