去掉第3位无用的0,第6位四舍五入

Remove useless 0 after 3 digits and round after 6 digit

我使用floatval()函数删除无用的0,但我想保留至少3个有效数字。就像如果我有 0.1800000 我想显示 0.180,如果我有 1.8454214 我想显示 1.845421。如何在 6 位数后进行一轮并在 3 位数后删除无用的 0s?

$value = 1.80000;
$value = floatval(round($value,6));
echo $value;   //I get 1.8

或者如果我有

$value = 1.84542146543;
$value = floatval(round($value,6));
echo $value;   //I get 1.845421

这很好用,但如果我有很多 0 就不行了。

我总是需要最少 3 位小数,但可以更多。

试试下面的代码

$value = 1.80000;
$value = floatval(round($value,6));
$valArr = explode('.', $value);
if(isset($valArr[1])){
    if(strlen($valArr[1]) < 3){
        $valArr[1] = str_pad($valArr[1], 3, "0", STR_PAD_RIGHT);
        $value = $valArr[0].'.'.$valArr[1];
    }
    else{
        $value = floatval(round($value,6));
    }
}

echo $value;

如果您想在网页中打印 0,它会起作用。

使用 floorsprintf 的组合将浮点数截断为具有 3 位小数的字符串。然后用max和四舍五入的浮点数比较。 PHP 将比较数值,如果它们数值相同则返回第一个参数(用零填充),如果数值更大则只返回第二个值(即第三个小数点后有一个大于 0 的数字)地方)。

$value = max(
    sprintf("%.3f", floor($value * pow(10, 3)) / pow(10, 3)),
    round($value, 6));