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.

Jawaban:


528

Kamu bisa memakai:

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

Lihat juga javadocs


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

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

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


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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.