PHP的运算有时候确实会出现类似的问题。有时候我用number_format格式化一下就好了。不过我也没找到原因

解决方案 »

  1.   

    正常的,这与计算机内部浮点数表示形式有关。浮点数计算不可能打到100%精度,这一点不光PHP中存在。正确方法是计算完成后使用round函数取得想要精度的浮点数,比如
    <?
    $a = 15521.42;
    $b = 15480.3;
    echo round($a-$b, 2);?>
    会输出41.12
      

  2.   

    有时候经过round运算后的值会变成科学记数法的形式。
      

  3.   

    呵呵,正确的方法就是用round函数,number_format返回结果是字符串,也就是说返回的是字符串“41.12”而不是数字41.12,如果这个结果还要进行其他运算而不是直接进行输出,则使用number_format的效率会低很多。你可以在中间过程使用round函数,输出前再使用number_format确保输出的格式。