Як відформатувати число 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.