我使用floatval()
函数来删除无用的0
s,但我希望至少保留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,它会起作用。
使用floor
和sprintf
的组合将浮点值截断为小数点后3位的字符串。然后使用max
将其与舍入的浮点值进行比较。PHP将对这些值进行数字比较,如果它们在数字上相同,则返回第一个参数(用零填充),如果第二个值在数字上更大(即小数点后第三位有一个大于0的数字),则仅返回第二个参数。
$value = max(
sprintf("%.3f", floor($value * pow(10, 3)) / pow(10, 3)),
round($value, 6));