PHP 保留小數點後有效數字(四捨五入)

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

相關文章