这是一个非常简单的问题,但我没有看到一个简单直接的解决方案。
我有代表数值的值,但是是字符串。例子:0.0, 1.0, 10.0, 1.1。大多数时候它们代表整数,但也可以是分数。
我想将这些数字显示为0, 1, 10, 1.1.
我想到了这些直接的解决方案,但它们不考虑偶尔的分数:
$val = (int) val;
--OR--
$val = sprintf('%d', $val);
显然会有很长的解决方案,在格式化之前测试数字是否为整数,但我正在寻找简单的东西,尽可能短。
这是一个非常简单的问题,但我没有看到一个简单直接的解决方案。
我有代表数值的值,但是是字符串。例子:0.0, 1.0, 10.0, 1.1。大多数时候它们代表整数,但也可以是分数。
我想将这些数字显示为0, 1, 10, 1.1.
我想到了这些直接的解决方案,但它们不考虑偶尔的分数:
$val = (int) val;
--OR--
$val = sprintf('%d', $val);
显然会有很长的解决方案,在格式化之前测试数字是否为整数,但我正在寻找简单的东西,尽可能短。
使用这个简单的技巧:
echo 0.0 + 0;
echo 1.0 + 0;
echo 10.0 + 0;
echo 1.1 + 0;
这相当于铸造浮动
(float)$num
或者
floatval($num)
你可以试试这个:
$val = preg_match("/\.0$/", $number_string) ? (int)$number_string : (float)$number_string;
它在原始字符串上使用正则表达式来匹配.0结尾,如果匹配,则 type 将字符串值强制转换为整数,否则将值强制转换为浮点数。