去掉第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 位数后删除无用的 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
就不行了。
我总是需要最少 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,它会起作用。
使用 floor
和 sprintf
的组合将浮点数截断为具有 3 位小数的字符串。然后用max
和四舍五入的浮点数比较。 PHP 将比较数值,如果它们数值相同则返回第一个参数(用零填充),如果数值更大则只返回第二个值(即第三个小数点后有一个大于 0 的数字)地方)。
$value = max(
sprintf("%.3f", floor($value * pow(10, 3)) / pow(10, 3)),
round($value, 6));
我使用floatval()
函数删除无用的0
,但我想保留至少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
就不行了。
我总是需要最少 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,它会起作用。
使用 floor
和 sprintf
的组合将浮点数截断为具有 3 位小数的字符串。然后用max
和四舍五入的浮点数比较。 PHP 将比较数值,如果它们数值相同则返回第一个参数(用零填充),如果数值更大则只返回第二个值(即第三个小数点后有一个大于 0 的数字)地方)。
$value = max(
sprintf("%.3f", floor($value * pow(10, 3)) / pow(10, 3)),
round($value, 6));