场景:现有两个变量:amt,namt都是通过运算后保留2位小数的float数字。
直接上代码:
$data = array(
array('amt' => 8.1, 'namt' => 8.1),
array('amt' => 16.2, 'namt' => 16.2),
array('amt' => 24.3, 'namt' => 24.3),
);
foreach($data as $value)
{
echo ($value['amt'] - $value['namt']).'<br/>';
//输出结果:
/*
* 0 (8.1-8.1的结果)
* 0 (16.2-16.2的结果)
* 4.5474735088646E-15 (24.3-24.3的结果)
*/
//正解:
echo ($value['amt'] - "{$value['namt']}").'<br/>';
//此时,所有输出都是0
}
本文探讨了在PHP中使用浮点数进行运算时遇到的精度问题,通过具体实例展示了即使看似相等的浮点数也可能因内部表示而产生极小的误差,并提供了解决方案。
1981

被折叠的 条评论
为什么被折叠?



