我有两个数字,分别是4和4.5。 我希望它都被格式化为 04 和 04.50。
以下是我为正确显示数字 4 所做的工作。
$num_padded = sprintf("%02s", 4);
echo $num_padded;
但它不适用于 4.5
此外,如果 no 是 2 位数字,例如 10 或 10.50,则不应添加零。 当值为 10.5 时,必须添加最后一个零。 如何使用 PHP 完成类似的工作?
我在这里找到了类似的答案,但不完全是我想要的。PHP 在个位数之前加上前导零,即时
一种方法
是,如果您的号码在 [0, 10) 范围内,则只需在前面加上"0"
$num_padded = $num;
if ($num != floor($num)) {
$num_padded = sprintf("%2.2f", $num);
}
if ($num < 10 && $num >= 0)
$num_padded = "0" . $num_padded;
也许这可能是一个解决方案; 它满足所有注释的情况:
$num = 10.5;
$padded="0000".$num."0000";
if (($dotpos = strpos($padded, ".")) !== FALSE) {
$result = substr($padded, $dotpos-2, 2).".".substr($padded, $dotpos+1, 2);
} else {
$result = sprintf("%02s", $num);
}
echo $result;
例:
num = 4 -> 输出 = 04
num = 4.5 -> 输出 = 04.50
num = 10-> 输出 = 10
num = 10.5 -> 输出 = 10.50
我自己写了这个函数。
function format_string($str) {
$val = '';
if (is_int($str))
$val = sprintf("%02s", $str);
else if (is_float($str))
$val = str_pad(sprintf("%0.2f", $str), 5, '0', STR_PAD_LEFT);
return $val;
}
echo format_string(4); // 04
echo format_string(4.5); // 4.50
$num_padded = sprintf("%02.2f", $num);
所以我们在点之后有 2 位数字,在点之前有两位数字(可能是零)。
这正是您所需要的:
str_pad( )
字符串 str_pad( 字符串 $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )
参考: http://php.net/manual/en/function.str-pad.php
参数:
- 您的号码
- 需要多少个空格(或 0)
- 用于替换这些空格的字符(第 3 项)
- 数字的左侧或右侧(字符串,第一个参数)
例:
echo str_pad( '9', 10, '0', STR_PAD_LEFT ); // 0000000009
echo str_pad( '9', 10, '0', STR_PAD_RIGHT ); // 9000000000
对不起我的英语