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;
}
}