Možné duplicitné:
Je matematika jazyka JavaScript porušená?
If(0.3-0.2==0.2-0.1)
väčšina z programovacieho jazyka zobrazuje výsledok false
. Chcem vedieť, ktorý jazyk podporuje toto tvrdenie true
a prečo väčšina jazykov ukazuje false
.
Testované v Javascript
a PHP
, Prečo sa to deje?
odpovede:
4 pre odpoveď č. 1Dôvod, prečo sa to stane, nie je nutne s jazykom, per se, ale implementácia. Odpoveď na túto otázku je, že keď píšete If(0.3-0.2==0.2-0.1)
, myslíte si, že vykonané operácie sú v odôvodneniach, to je falošné, že sú skutočne v aritmetike s pohyblivou rádovou čiarkou. V skutočnosti, v rámci aritmetiky s pohyblivou rádovou pozíciou, toto je falošný! Takže odpoveď je: akýkoľvek jazyk, ktorý nespĺňa tlmočenie konštánt v ľubovoľne presnej aritmetike. (Napríklad, ak boli napísané v Haskell pomocou a racionálne číslo, potom test by "pracoval".) Pre úplnosť: raketa jazyk to robí.