删除3位数字后无用的0,并在6位数字后取整


Remove useless 0 after 3 digits and round after 6 digit

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

$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 s的话就不行了。

我总是需要最少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;

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

使用floorsprintf的组合将浮点值截断为小数点后3位的字符串。然后使用max将其与舍入的浮点值进行比较。PHP将对这些值进行数字比较,如果它们在数字上相同,则返回第一个参数(用零填充),如果第二个值在数字上更大(即小数点后第三位有一个大于0的数字),则仅返回第二个参数。

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