Cara memformat angka 0..9 untuk ditampilkan dengan 2 digit (BUKAN tanggal)

215

Saya ingin selalu menampilkan angka di bawah 100 dengan 2 digit (contoh: 03, 05, 15 ...)

Bagaimana saya bisa menambahkan 0 tanpa menggunakan persyaratan untuk memeriksa apakah di bawah 10?

Saya perlu menambahkan hasilnya ke String lain, jadi saya tidak bisa menggunakan printf.

realtebo
sumber

Jawaban:

528

Kamu bisa memakai:

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

Lihat juga javadocs

beny23
sumber
1
Bagaimana jika Jumlah saya adalah ganda?
Fra
3
@ Fr, maka Anda akan menggunakan String.format("%02.0f", myNumber)jika Anda tidak ingin angka setelah titik desimal
beny23
Bagi mereka yang ingin membaca secara khusus tentang sintaks format string: Format String Syntax
Pony
Ini akan menghasilkan Peringatan Linter Android "Secara implisit menggunakan lokal default adalah sumber bug umum: Gunakan String.format (Lokal, ...) sebagai gantinya"
Christopher Stock
1
@ChristopherStock Itu masalah yang benar-benar terpisah, berkaitan dengan menggunakan lokal default yang benar dari perangkat yang dijalankan aplikasi - Anda dapat mengabaikan atau memperbaikinya, tetapi itu hanya terkait dengan Android dan lokal saja. Tidak ada hubungannya dengan pemformatan string yang sebenarnya
Radu
55

Jika Anda perlu mencetak nomor, Anda dapat menggunakan printf

System.out.printf("%02d", num);

Kamu bisa memakai

String.format("%02d", num);

atau

(num < 10 ? "0" : "") + num;

atau

(""+(100+num)).substring(1);
Peter Lawrey
sumber
2
Sejauh ini, menggunakan format adalah yang paling lambat, tetapi lebih jelas dan tidak terlalu salah. misal jika num adalah -1. ;)
Peter Lawrey
42

Anda bisa menggunakan ini:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01
Daniel André
sumber
Ini harus menjadi jawaban yang diterima! Hasil dari solusi melalui String.format dapat bervariasi karena pengaturan lokal. (s. Peringatan Linter Android "Secara implisit menggunakan lokal default adalah sumber bug yang umum: Gunakan String.format (Lokal, ...))
Christopher Stock
3

Kelas String hadir dengan kemampuan format:

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

untuk dokumentasi lengkap, ini dok

Grimmy
sumber
Dikatakanjava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha
2

Dalam sumber daya android itu agak sederhana

<string name="smth">%1$02d</string>
Vlad
sumber