数字0..9を2桁で表示するようにフォーマットする方法(日付ではありません)


215

常に100未満の数字を2桁で表示したい(例:03、05、15 ...)

条件を使用せずに0を追加して、10未満かどうかを確認するにはどうすればよいですか?

結果を別の文字列に追加する必要があるため、printfを使用できません。

回答:


528

以下を使用できます。

String.format("%02d", myNumber)

javadocsも参照してください


1
myNumberがdoubleの場合はどうなりますか?
Fra

3
@Fra、String.format("%02.0f", myNumber)小数点以下の数値が必要ない場合に使用します
beny23

文字列フォーマット構文について具体的に読みたい人のために: フォーマット文字列構文
Pony

これにより、Androidリンター警告が生成されます。「デフォルトのロケールを暗黙的に使用することがバグの一般的な原因です。代わりにString.format(Locale、...)を使用してください」
Christopher Stock

1
@ChristopherStockこれは完全に別の問題であり、アプリが実行されているデバイスの正しいデフォルトロケールを使用する場合、無視または修正できますが、これはAndroidとロケールにのみ関連しています。実際の文字列の書式設定とは関係ありません
Radu

55

番号を印刷する必要がある場合は、printfを使用できます。

System.out.printf("%02d", num);

使用できます

String.format("%02d", num);

または

(num < 10 ? "0" : "") + num;

または

(""+(100+num)).substring(1);

2
形式を使用するのがはるかに遅いですが、それはより明確であり、ひどく間違っている可能性が低くなります。たとえば、numが-1の場合。;)
Peter Lawrey、

42

あなたはこれを使うことができます:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01

これは受け入れられる答えになるはずです!String.formatによるソリューションの結果は、ロケール設定によって異なる場合があります。(s。Androidリンター警告「デフォルトのロケールを暗黙的に使用することは、バグの一般的な原因です。String.format(Locale、...)を使用してください)
クリストファー株式


2

Androidリソースではかなりシンプルです

<string name="smth">%1$02d</string>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.