我在PHP中进行简单的计算时遇到了一些奇怪的行为。请考虑以下代码:
$numbers = [29, -6.01];
$a = 22.99;
$b = array_sum($numbers);
$c = (float) array_sum($numbers);
$d = 22.99;
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($a - $b);
var_dump($a - $c);
var_dump($a - $d);
var_dump
语句的预期输出应为:
float(22.99)
float(22.99)
float(22.99)
float(22.99)
float(0)
float(0)
float(0)
而是输出:
float(22.99)
float(22.99)
float(22.99)
float(22.99)
float(-3.5527136788005E-15)
float(-3.5527136788005E-15)
float(0)
因此,当执行实际减法时,array_sum
函数调用的结果(在转储时显示正确的值)会有所不同。
我已在 PHP 7.0.25 上尝试过此操作。我无法找到任何错误报告或描述此行为的任何其他资源。在提交错误报告之前,我确定我不会遗漏任何内容。