3位数后删除无用0,6位后删除

时间:2016-05-16 13:48:41

标签: php rounding

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

$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位小数,但它可以更多。

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码

$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,它将起作用。

答案 1 :(得分:0)

使用floorsprintf的组合将浮点数截断为包含3个小数位的字符串。然后使用max将其与圆形浮点数进行比较。 PHP将以数字方式比较值,如果它们在数值上相同则返回第一个参数(用零填充),如果它在数值上更大则返回第二个值(即在第三个小数位后有一个大于0的数字)。 / p>

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