PHP保留小数位 0舍1入

PHP有个函数round可以保留小数位,默认四舍五入,通过配置第三个参数也可以全舍,但是0舍1入就实现不了了,正好有这么个需求,于是自己写了个函数。

/*
 * 保留小数位,超出的第一位非0进1
 * 即非四舍五入,即便是1也入
 */
function round_greater($num, $decimals){
    $num = floatval($num);

    $index_of_dot = strpos($num, '.');

    if($index_of_dot){
        $len = strlen($num);
        $len_of_decimals = $len - $index_of_dot - 1;
        if($len_of_decimals <= $decimals){
            return $num;
        }else{
            $last_num = substr($num, -1 , 1);
            if($last_num <  5){
                $base = pow(0.1, $decimals);
                return floatval(round($num,  $decimals) + $base);
            }else{
                return floatval(round($num,  $decimals));
            }
        }
    }else{
       return $num;
    }
}

Leave a Comment

豫ICP备19001387号-1