2

4 と 4.5 の 2 つの数字があります。両方とも 04 と 04.50 としてフォーマットする必要があります。

以下は、4番を正しく表示するために行ったことです。

$num_padded = sprintf("%02s", 4);
echo $num_padded;

しかし、4.5では機能しません

また、番号が 10 や 10.50 のように 2 桁の場合は、ゼロを追加する必要はありません。値が 10.5 の場合、最後のゼロを追加する必要があります。PHPで同様の作業を行うにはどうすればよいですか?

ここで同様の回答を見つけましたが、探しているものとはまったく異なります。PHPは、オンザフライで1桁の数字の前に先行ゼロを追加します

4

5 に答える 5

2

これを行う 1 つの方法は、番号が [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;
于 2013-09-30T16:03:14.400 に答える
1

私は自分でこの関数を書きました。

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
于 2013-09-30T16:07:47.557 に答える
1

多分これは解決策になるかもしれません。コメントされたすべてのケースを満たします。

$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;

ケース:

数値 = 4 -> 出力 = 04

数値 = 4.5 -> 出力 = 04.50

数値 = 10 -> 出力 = 10

数値 = 10.5 -> 出力 = 10.50

于 2013-09-30T16:12:32.820 に答える
0

これはまさにあなたが必要とするものです:

str_pad( )

string str_pad( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

参考: http: //php.net/manual/en/function.str-pad.php

パラメーター:

  1. あなたの番号
  2. 必要なスペース (または 0) の数
  3. これらのスペースを置き換える文字 (項目 3)
  4. 数値の左または右 (文字列、最初のパラメーター)

例:

echo str_pad( '9', 10, '0', STR_PAD_LEFT ); // 0000000009
echo str_pad( '9', 10, '0', STR_PAD_RIGHT ); // 9000000000

私の英語でごめんなさい

于 2013-09-30T16:39:36.943 に答える
0
$num_padded = sprintf("%02.2f", $num);

したがって、ポイントの後に 2 桁、ポイントの前に 2 桁 (おそらくゼロ) があります。

于 2013-09-30T16:15:29.797 に答える