如何设置数字0..9的格式以显示2位数字(不是日期)


215

我想始终显示一个小于100的2位数字(例如:03、05、15 ...)

如何在不使用条件检查是否小于10的情况下附加0?

我需要将结果附加到另一个String,所以我不能使用printf。

Answers:


528

您可以使用:

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

另请参见javadocs


1
如果myNumber是双精度数怎么办?
法兰克福机场

3
@Fra,那么String.format("%02.0f", myNumber)如果您不希望小数点后的数字,可以使用
beny23

对于那些想专门阅读有关字符串格式语法的人: 格式字符串语法
Pony

这将生成一个Android Linter警告“明显地使用默认语言环境是错误的常见来源:请改用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。;)
彼得·劳瑞

42

您可以使用此:

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

这应该是公认的答案!通过String.format解决的结果可能会因区域设置而异。(s。Android Linter警告“明显地使用默认语言环境是错误的常见来源:Use String.format(Locale,...))
Christopher Stock

3

String类具有以下格式功能:

System.out.println(String.format("%02d", 5));

有关完整文档,请参阅以下文档


它说java.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha

2

在android资源中,这非常简单

<string name="smth">%1$02d</string>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.