PHP浮动比较

时间:2015-10-29 15:00:47

标签: php

我想知道为什么在最后一种情况下返回false var_dump

var_dump(66*0.1);
var_dump(6.6);
var_dump((66*0.1) == 6.6);

输出:

float(6.6)
float(6.6)
bool(false)

如果我使用round它可以正常工作:

var_dump(round(66*0.1, 1) == 6.6);
bool(true)

有人能形容我说php浮动有什么问题吗?

2 个答案:

答案 0 :(得分:2)

此问题继承自C语言。

比较浮动值时会有一点差异,

请参阅this,ans this

试试这个,

if (abs((6.6 - 6.6)/ 6.6) < 0.00001) {
    echo '<br />Both are equal ';
}
else{
    echo '<br />Both are not equal ';
}

答案 1 :(得分:0)

可能是因为像大多数编程语言和CPU一样,PHP无法准确表示浮点数。有关详细信息,请参阅此文章:https://en.wikipedia.org/wiki/Floating_point