PHP错误计算时添加双号出错了

时间:2018-03-22 06:57:48

标签: php

  

注意:我认为这不重复,因为相同的双重添加工作   另一个脚本而不是在同一个脚本中。这些都是双倍的   浮动,这个问题与php没有关系,如果那是问题那么什么可能是php的解决方案。

虽然两个脚本var_dump相同的数字和类型都显示浮点值相同但两个脚本中的计算不同。

什么可能是错的?还有其他隐藏在double或float中的东西,在var_dump中没有显示出来吗?

我知道我可以解决问题,但是为什么它在一个脚本而不是另一个脚本中工作。

我已经提供了简化版的完整脚本。

不完整的完整版本 https://eval.in/976389

短版本工作正常 https://eval.in/976394

为什么两者都给出不同的输出?         

$str="12000,1000,5000,-5000,25000,-10000,-10000,-4000,-10000,-3000,7000,-3000,-3000,-1000,7000,13000,-10000,-7000,-3000,-20,3
2,-1000,1000,2000,1000,-100,-100,-100,-3646,3000,-2000,-19,-9,3000,2000,-38,-2000,-200,-3646,-48,-100,3000,-1000,-1500,
-20,-80,4000,-46,-200,-3646,-183,1000,-67,10000,-7000,-1000,-2000,-500,10000,-4000,-2200,-100,-557.28,-16,1.09,1.05,-50
,-110,2000,-50,-231,-3646,-1000,-30,-50,-50,-110,-30,50,30,-50,-32,110,-28,-52,-32,-32,50,-102,-102,-300";
$numbers=explode(',',$str);

$balance=0;
foreach ($numbers as $number){
    $number=doubleval($number);

    $l=$balance;
    $balance=$balance+$number;
    if(strlen(@explode('.',$balance)[1])>2){

        var_dump($l);
        var_dump($number);
        echo $l.' + '.$number."\n";
        echo ($l+$number)."\n";die;
    }
}

0 个答案:

没有答案