Názor k článku
Douglas Crockford vyvinul nový programovací jazyk Misty od Filip Jirsák - To, že číselné datové typy ztrácí přesnost, je...

  • Článek je starý, nové názory již nelze přidávat.
  • 18. 12. 2023 20:14

    Filip Jirsák
    Stříbrný podporovatel

    To, že číselné datové typy ztrácí přesnost, je u programovacích jazyků normální. Mapují totiž své datové typy na datové typy, se kterými umí počítat procesor. Proto obvykle mají programovací jazyky i nějaký typ, který přenost zaručuje – výměnou za daleko pomalejší výpočty.

    Problém JSONu je ten, že počítá s tím, že se budou používat číselné datové typy ztrácející přesnost, ale nedefinuje to a každý parser si to může dělat jinak. Kdyby ve specifikaci JSONu bylo, že číslo musí být reprezentovatelné beze změny jako 64bitové IEEE 754, jak je to v JavaScriptu, ze kterého JSON vychází, bylo by to mnohem lepší, než současný stav. Každý by věděl, že když chce přesná čísla, musí je ukládat jako text. Místo toho specifikace vzbuzuje dojem, že lze JSONem přenášet libovolně přesná čísla, ale klidně pak dovolí parserům, aby ta čísla zmršily. A není to chyba parserů, takhle fungoval už původní „parser“ JSONu, tedy volání JavaScriptového eval(). Tohle je chyba specifikace, která rozvolnila podmínky, aniž by někdo vážně počítal s tím, že se to uvolnění bude využívat.