PHP rounding error

后端 未结 6 1205
伪装坚强ぢ
伪装坚强ぢ 2020-12-03 14:56

I\'m using PHP 5.2.13 on my linux server. I\'m getting weird error when rounding numbers. This is my test case:



        
6条回答
  •  广开言路
    2020-12-03 15:35

    @Shabbyrobe: your function is wrong: try to round this number with a scale of 2: 44069.3445

    it should be 44069.35, but default php round()- and your Function returns 44069.34

    Working code by a member of php.net:

    function mround($number, $precision=0) {
    
    $precision = ($precision == 0 ? 1 : $precision);   
    $pow = pow(10, $precision);
    
    $ceil = ceil($number * $pow)/$pow;
    $floor = floor($number * $pow)/$pow;
    
    $pow = pow(10, $precision+1);
    
    $diffCeil     = $pow*($ceil-$number);
    $diffFloor     = $pow*($number-$floor)+($number < 0 ? -1 : 1);
    
    if($diffCeil >= $diffFloor) return $floor;
    else return $ceil;
    }
    

提交回复
热议问题