1

可能的重复:
JavaScript 的数学被破坏了吗?

If(0.3-0.2==0.2-0.1)大多数编程语言都显示结果false。所以我想知道哪种语言支持此语句true以及为什么大多数语言显示false

Javascript在和中测试PHP。为什么会这样?

4

1 回答 1

4

发生这种情况的原因不一定与语言本身有关,而是与实现有关。这个问题的答案是,当你写的时候If(0.3-0.2==0.2-0.1),你认为执行的操作是有理数的,这是错误的,它们确实是浮点运算。事实上,在浮点运算中,这错误的!所以答案是:任何默认以任意精确算术解释常量的语言。(例如,如果这些是在 Haskell 中使用Rational数编写的,那么测试将“有效”。)为了完整性:Racket语言执行此操作。

于 2012-10-05T04:03:57.030 回答