格式化表示数字的字符串的问题,尤其是整数

时间:2013-11-14 10:55:32

标签: php casting formatting

这是一个非常简单的问题,但我没有看到简单直接的解决方案。

我有表示数值的值,但是是字符串。示例:0.0, 1.0, 10.0, 1.1。 大部分时间它们代表整数,但可能有分数。

我想将这些数字显示为0, 1, 10, 1.1

我想到了这些直接的解决方案,但它们并没有考虑到偶然的分数:

$val = (int) val;
--OR--
$val = sprintf('%d', $val);

显然会有很长的解决方案,在格式化之前测试数字是否为整数,但我正在寻找一些简单的,尽可能短的。

2 个答案:

答案 0 :(得分:2)

使用这个简单的技巧:

echo 0.0 + 0;
echo 1.0 + 0;
echo 10.0 + 0;
echo 1.1 + 0;

这相当于使用

进行浮动
(float)$num

floatval($num)

答案 1 :(得分:0)

你可以试试这个:

$val = preg_match("/\.0$/", $number_string) ? (int)$number_string : (float)$number_string;

它在原始字符串上使用正则表达式来匹配.0结尾,如果匹配,则键入将字符串值转换为整数,否则将值转换为浮点数。