我想知道为什么在最后一种情况下返回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浮动有什么问题吗?
答案 0 :(得分:2)
此问题继承自C
语言。
比较浮动值时会有一点差异,
试试这个,
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