Php 为什么';这种比较不起作用吗?

Php 为什么';这种比较不起作用吗?,php,javascript,programming-languages,Php,Javascript,Programming Languages,可能重复: If(0.3-0.2==0.2-0.1)大多数显示结果的编程语言false。因此我想知道哪种语言支持此语句true,以及为什么大多数语言显示false 在Javascript和PHP中测试。为什么会发生这种情况?发生这种情况的原因不一定与语言本身有关,而是与实现有关。这个问题的答案是,当你写如果(0.3-0.2==0.2-0.1),你认为执行的运算是有理数,这是错误的,它们确实是浮点运算。事实上,在浮点运算中,这是错误的!所以答案是:任何语言默认用任意精确的算术来解释常量。(例如,

可能重复:

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


Javascript
PHP
中测试。为什么会发生这种情况?

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

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

乍一看,这听起来像是一个有争议的问题,但是重新编码以暴露真正的肉会让它听起来不那么有争议(我相信真正的肉食是使用浮点近似,而不是理性表示).我已经进行了适当的编辑。@prashanth可能,但OP也会询问默认情况下哪些语言支持这一点。虽然我同意这一点,但确实有惊人的相似之处。乍一看,这听起来像是一个有争议的问题,但重新编码以暴露真正的肉会让它听起来不那么有争议(我相信真正的meat处理的是使用浮点近似而不是理性表示)。我已经进行了适当的编辑。@prashanth可能,但OP也询问默认情况下哪种语言支持这一点。尽管我同意这两者有着明显的相似性。。