Reály jsou sice známé jako nepřesné, ale jsou 100% přesné i pro velmi velká čísla, pokud nepoužívají desetinnou čárku (=celá čísla).
Čísla do 53 bitů, přesněji řečeno [-(2^53)+1, (2^53)-1], tedy v rozsahu od -9 007 199 254 740 992 do 9 007 199 254 740 992, budou reprezentována přesně.
Více o reálných číslech
Pokud se podíváte na definici pojmu Double-precision binary floating-point na Wikipedii, zjistíte o dělení a přesnosti číslic toto:
„Přesnost 53bitového signifikantu dává přesnost 15 až 17 významných desetinných číslic (2-53 ≈ 1,11 × 10-16). Pokud se desetinný řetězec s nejvýše 15 významnými číslicemi převede na reprezentaci IEEE 754 s dvojnásobnou přesností a poté se převede zpět na desetinný řetězec se stejným počtem číslic, měl by konečný výsledek odpovídat původnímu řetězci. Pokud je číslo s dvojnásobnou přesností IEEE 754 převedeno na desetinný řetězec s nejméně 17 významnými číslicemi a poté převedeno zpět na dvojnásobnou přesnost, musí se konečný výsledek shodovat s původním číslem.“
Převést na řetězec
Ačkoli bylo možné po mnoho let provádět výpočty s velkými čísly typu Real, převod na text nebo z textu byl omezen na použití 12místného vědeckého zápisu, což vedlo ke ztrátě přesnosti.
Ve verzi 4D v19 R6 jsme vylepšili přesnost a převod čísla Real (prezentujícího celé číslo) na text.
Vylepšení převodu na řetězec se týká příkazu String() a příkazů JSON a XML vracejících čísla ve formě řetězce.
Editor kódu
V editoru kódu můžete nyní například zadávat:
$r:=2147483647000000
a zůstane v původním tvaru, místo aby se formátoval jako:
$r:=2.147483647e+15
Šťastné kódování!