PHP加法减法运算,结果不准确

时间:2011-06-15 10:24:56

标签: php operation

<?php echo 199.8 + 0.9 -200.7; //expect 0, result 2.8421709430404E-14 ? ?>

在PHP版本5.3.2-1 ubuntu4.7上测试

3 个答案:

答案 0 :(得分:7)

某些值的空间有限的小数浮点is inaccurate(就像在十进制表示法中,您无法在有限空间中写出1/3一样)。

2.8421709430404E-14非常接近0。

围绕它,或将其输出到一定数量的有效数字。

答案 1 :(得分:2)

如果您想要精确计算(即货币交易),您应该使用BCD(二进制编码小数)或任意精度数学。 PHP使用BC Math支持此功能。

答案 2 :(得分:0)

以下是http://www.php.net/manual/en/ref.bc.php的一些确切示例:

<?php

$a = 199.8;
$b = 0.9;
$c = 200.7;

// set precision
bcscale(1);

$ab = bcadd($a, $b);
echo bcsub($ab, $c); // result 0.0

?>

在Debian Squeeze上使用PHP 5.3.3-7 + squeeze1进行测试