我有此代码:
<?php
$a = 991.3;
$float = floor($a);
$float = $a - $float;
echo $float;
它给了我这个结果:
0.29999999999995
为什么不0.3
?以及如何获得0.3
而不是0.29999999999995
?
答案 0 :(得分:1)
这是因为PHP的浮点数精度不精确。 php manual entry about floating point number中对此进行了警告。
如果要对不同的运算进行数学精度计算,则必须使用PHP的bcmath
扩展名。我敢打赌,它必须已经在您的PHP安装中进行了编译,但是如果没有,则可以随时通过Google搜索如何安装它。 :)
答案 1 :(得分:1)
您可以使用此PHP functions进行精度数字运算。
<?php
$a = '1.234';
$b = '5';
echo bcsub($a, $b); // -3
echo bcsub($a, $b, 4); // -3.7660
?>