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

Posted

技术标签:

【中文标题】如何格式化数字 0..9 以显示 2 位数字(它不是日期)【英文标题】:How to format a number 0..9 to display with 2 digits (it's NOT a date) 【发布时间】:2012-09-14 09:13:36 【问题描述】:

我希望始终以 2 位数字显示 100 以下的数字(例如:03、05、15...)

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

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

【问题讨论】:

【参考方案1】:

你可以使用:

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

另见javadocs

【讨论】:

如果 myNumber 是双精度数怎么办? @Fra,如果你不想要小数点后的数字,你可以使用String.format("%02.0f", myNumber) 对于那些想专门阅读字符串格式语法的人:Format String Syntax 这将生成一个 android Linter 警告“隐式使用默认语言环境是常见的错误来源:请改用 String.format(Locale, ...)” @ChristopherStock 这是一个完全独立的问题,与使用运行应用程序的设备的正确默认语言环境有关 - 您可以忽略或修复它,但这仅与 Android 和语言环境有关。与实际的字符串格式无关【参考方案2】:

如果需要打印数字可以使用printf

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

你可以使用

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

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

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

【讨论】:

使用格式是迄今为止最慢的,但它更清晰,不太可能出错。例如如果 num 为 -1。 ;)【参考方案3】:

你可以用这个:

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

【讨论】:

这应该是公认的答案!通过 String.format 解决的结果可能因语言环境设置而异。 (s. Android Linter 警告“隐式使用默认语言环境是常见的错误来源:使用 String.format(Locale, ...)) 谢谢。这也适用于否定:-2 --> -02【参考方案4】:

String 类具有格式化功能:

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

完整的文档,这里是doc

【讨论】:

上面写着java.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments【参考方案5】:

在android资源中它相当简单

<string name="smth">%1$02d</string>

【讨论】:

【参考方案6】:

我知道回复晚了,但是有一个基本的方法可以做到这一点,没有库。如果你的数量小于 100,那么:

(number/100).toFixed(2).toString().slice(2);

【讨论】:

温和的解决方案,但对于未来的同事来说很难阅读 喂!我打错了,这段代码是js,帖子是关于java的。

以上是关于如何格式化数字 0..9 以显示 2 位数字(它不是日期)的主要内容,如果未能解决你的问题,请参考以下文章

常用的正则表达式大全(数字字符固定格式)

Linux练习题

例题详解

使用python以两位小数格式化excel数字

日期格式:

Linux系统操作测试试题 部分