有人可以解释为什么这段代码:
$a = 0.1;
$b = 0.2;
if ($a + $b == 0.3) {
echo "OK";
} else {
echo "KO";
}
返回 KO ?
我不明白为什么总和结果与浮点数0.3不同,考虑到:
var_dump($a + $b);
返回: float(0.3)
我唯一的假设是比较只在$ b和0.3之间,但怀疑仍然存在,因为在这种情况下:
if ( ($a + $b) == 0.3) {
我得 KO ..
答案 0 :(得分:0)
这是一个浮点数,如果你修正了精度,那么这个数字的精度就不固定了。
$a = 0.1;
$b = 0.2;
$c = sprintf('%.1f', ($a + $b));
if ($c == 0.3) {
echo "OK";
} else {
echo "KO";
}
结果现在是OK
。
答案 1 :(得分:0)
使用圆函数($ a + b,1);我的代码中有这个问题