Як відформатувати число 0..9 для відображення з двома цифрами (це НЕ дата)


215

Я хотів би завжди показувати число під 100 з двома цифрами (приклад: 03, 05, 15 ...)

Як я можу додати 0, не використовуючи умовного, щоб перевірити, чи він менше 10?

Мені потрібно додати результат до іншої рядки, тому я не можу використовувати printf.

Відповіді:


528

Ви можете використовувати:

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

Дивіться також javadocs


1
Що робити, якщо myNumber є подвійним?
Фра

3
@Fra, тоді ви будете використовувати, String.format("%02.0f", myNumber)якщо ви не хочете цифри після десяткової коми
beny23

Для тих, хто хоче прочитати спеціально про синтаксис формату рядка
Поні

Це створить попередження для 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
Використання формату - це найбільш повільно, але чіткіше і менш навряд чи піде жахливо неправильно. наприклад, якщо число дорівнює -1. ;)
Пітер Лорі

42

Ви можете скористатися цим:

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

Це має бути прийнята відповідь! Результат рішення через String.format може відрізнятися в залежності від налаштувань мови. (s. Попередження для Android Linter "Невмінне використання локальної мови за замовчуванням є поширеним джерелом помилок: Використовуйте 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

В андроїдних ресурсах це досить просто

<string name="smth">%1$02d</string>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.