废话不多说,请看下面代码
<?php
$num1 = 844.00;
$num2 = 697.99;
$num3 = 146.00;
var_dump($num1 );
var_dump($num2 );
var_dump($num3 );
echo $num1-$num2-$num3;
//结果 0.0099999999999909
$num1 = $num1*100;
$num2 = $num2*100;
$num3 = $num3*100;
echo "<br/>";
echo ($num1-$num2-$num3)/100;
//结果 0.01
$f = 0.58; var_dump(intval($f * 100));
//结果57
看了上面的结果,可能会觉得是php的问题,其实不然,是计算机本身的问题,因为底层二进制无法精确表示浮点数的一个bug,需要转换为整数