我正在尝试寻找一种快速的方法,从像这样的数字值中删除零小数位
:
echo cleanNumber('125.00');
// 125
echo cleanNumber('966.70');
// 966.7
echo cleanNumber(844.011);
// 844.011
有没有一些优化的方法来做这件事?
我正在尝试寻找一种快速的方法,从像这样的数字值中删除零小数位
:
echo cleanNumber('125.00');
// 125
echo cleanNumber('966.70');
// 966.7
echo cleanNumber(844.011);
// 844.011
有没有一些优化的方法来做这件事?
$num + 0
就可以搞定。
echo 125.00 + 0; // 125
echo '125.00' + 0; // 125
echo 966.70 + 0; // 966.7
在内部,这相当于使用 (float)$num
或 floatval($num)
将其转换为浮点数,但我觉得这更简单。
floatval()
一样告诉我们它的行为。 - Maikfloatval
函数的行为是返回一个浮点数。我认为将其用作小数格式化工具既不明显也不干净。 - lafor//注释
- Positivity你可以使用floatval
函数。
echo floatval('125.00');
// 125
echo floatval('966.70');
// 966.7
echo floatval('844.011');
// 844.011
这是我使用的:
function TrimTrailingZeroes($nbr) {
return strpos($nbr,'.')!==false ? rtrim(rtrim($nbr,'0'),'.') : $nbr;
}
注意:这假定 .
是小数分隔符。它的优点是它适用于任意大(或小)的数字,因为没有浮点转换。它也不会将数字转换为科学计数法(例如1.0E-17)。
number_format()
,它始终包含十进制分隔符(如果提供了十进制值),则代码可以简化为:例如:$output = rtrim(rtrim(number_format($input, 10), '0'), '.')
。 - Quinn Comendantnumber_format()
后解析结果非常好。谢谢! - Jeaf Gilbert如果您想在页面或模板上显示数字前删除末尾的零。
您可以使用sprintf()函数。
sprintf('%g','125.00');
// 125
sprintf('%g','966.70');
// 966.7
sprintf('%g',844.011);
// 844.011
sprintf('%s', number_format(2699, 0, '.', ','))
- Hemerson Varela只需将+
添加到您的字符串变量中,就会将类型转换为(float)并删除零:
var_dump(+'125.00'); // double(125)
var_dump(+'966.70'); // double(966.7)
var_dump(+'844.011'); // double(844.011)
var_dump(+'844.011asdf');// double(844.011)
对于所有遇到使用逗号出现问题的访问本网站的人,更改:
$num = number_format($value, 1, ',', '');
至:$num = str_replace(',0', '', number_format($value, 1, ',', '')); // e.g. 100,0 becomes 100
如果需要去掉两个零,则改为:
$num = str_replace(',00', '', number_format($value, 2, ',', '')); // e.g. 100,00 becomes 100
更多内容请见:PHP数值:小数点只在必要时才显示
$string = "42.422005000000000000000000000000";
echo (float)$string;
这个输出结果就是你所需要的。
42.422005
(float)'0.1234567890124567890123456789'
变成了0.12345678901246
。 - mpen将类型转换为 float
。
$int = 4.324000;
$int = (float) $int;
$x = '100.10';
$x = preg_replace("/\.?0*$/",'',$x);
echo $x;
没有什么比一个简单的正则表达式更不能解决的问题了 ;)
$x = preg_replace("/(\.0*$)|((?<=\.\d*)0+$)/",'',$x);
- Emanuel S.在添加 +0 时要小心。
echo number_format(1500.00, 2,".",",")+0;
//1
结果为1。
echo floatval('1,000.00');
// 1
echo floatval('1000.00');
//1000