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.