/ / Prečo toto porovnanie nefunguje? [duplicitné] - php, javascript, programovacie jazyky

Prečo toto porovnanie nefunguje? [duplicitné] - php, javascript, programovacie jazyky

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ď č. 1

Dô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í.