/**
* 四捨五入保留有效數字
* $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 協議》,轉載必須註明作者和本文連結