PHP 保留小数点后有效数字(四舍五入)
/**
* 四舍五入保留有效数字
* $val 需要保留的数值 必填
* $num 需要保留的位数 必填
* $s 开始位置 不需要填
* $d 结束位置 不需要填
*/
function keepValidNumbers($val, $num, $s = 1, $d = 1) {
$result = round($val, $s);
if ($result == 0 && $num > $d) {
return keepValidNumbers($val, $num, ++$s, $d);
} else if($num > $d) {
return keepValidNumbers($val, $num, ++$s, ++$d);
} else {
return $result;
}
}
解决的问题是:
round()函数是保留小数点后N位,我的需求是保留小数点后N位有效数字,如0.001111111,round()的结果为0.0011,我需要的结果是0.001111
有效数字的含义:从该数的第一个非零数字起,直到末尾数字止的数字称为有效数字,如0.618的有效数字有三个,分别是6,1,8。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: