我使用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位小数,但它可以更多。
答案 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)
使用floor
和sprintf
的组合将浮点数截断为包含3个小数位的字符串。然后使用max
将其与圆形浮点数进行比较。 PHP将以数字方式比较值,如果它们在数值上相同则返回第一个参数(用零填充),如果它在数值上更大则返回第二个值(即在第三个小数位后有一个大于0的数字)。 / p>
$value = max(
sprintf("%.3f", floor($value * pow(10, 3)) / pow(10, 3)),
round($value, 6));