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


215

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

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

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

Ответы:


528

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

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

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


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));

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


java.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Там

2

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

<string name="smth">%1$02d</string>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.