Как отформатировать число 0..9 для отображения с 2 цифрами (это НЕ дата)

215

Я хотел бы всегда показывать число до 100 с 2 цифрами (пример: 03, 05, 15 ...)

Как я могу добавить 0, не используя условное выражение, чтобы проверить, что он меньше 10?

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

realtebo
источник

Ответы:

528

Ты можешь использовать:

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

Смотрите также Javadocs

beny23
источник
1
Что если myNumber является двойным?
Фра
3
@Fra, тогда вы бы использовали, String.format("%02.0f", myNumber)если вы не хотите, чтобы числа после десятичной точки
beny23
Для тех, кто хочет прочитать конкретно о синтаксисе формата строки
Pony
Это приведет к появлению предупреждения Linter Android «Неявное использование локали по умолчанию является распространенным источником ошибок: используйте вместо этого String.format (Locale, ...)»
Кристофер Сток
1
@ChristopherStock Это совершенно отдельная проблема, связанная с использованием правильного языкового стандарта по умолчанию для устройства, на котором работает приложение - вы можете игнорировать или исправлять его, но это касается только Android и языковых стандартов. Ничего общего с фактическим форматированием строки
Раду
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 Warning "Неявное использование локали по умолчанию является распространенным источником ошибок: используйте String.format (Locale, ...))
Christopher Stock
3

Класс String поставляется с возможностями форматирования:

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

для полной документации, вот документ

Grimmy
источник
java.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Там
2

В ресурсах Android это довольно просто

<string name="smth">%1$02d</string>
Влад
источник