【发布时间】:2016-09-28 01:02:38
【问题描述】:
有人可以解释为什么这个代码:
$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..
【问题讨论】:
-
如果设置了精度,则进行比较,否则不进行。
-
$a + $b -.3 = 5.5511151231258E-17
-
看这个例子:https://3v4l.org/0Ad6A
-
http://php.net/manual/en/language.types.float.php#113703 完美地回答了这个问题。谢谢
标签: php if-statement