如何格式化数字 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 位数字(它不是日期)的主要内容,如果未能解决你的问题,请参考以下文章