Kelas utama digunakan: java.text.decimalformat
1. Untuk membuat instantiate suatu objek, Anda dapat menggunakan dua metode berikut:
Salinan kode adalah sebagai berikut:
Decimalformat df = (decimalformat) numberFormat.getInstance ();
Decimalformat df1 = (decimalformat) decimalformat.getInstance ();
Karena Decimalformat mewarisi dari NumberFormat.
2. Atur jumlah tempat desimal
Sistem default ke tempat desimal adalah 3, seperti:
Salinan kode adalah sebagai berikut:
Decimalformat df = (decimalformat) numberFormat.getInstance ();
System.out.println (df.format (12.3456789));
Output: 12.346
Sekarang Anda dapat mengatur desimal ke dua digit dengan metode berikut:
Salinan kode adalah sebagai berikut:
df.setMaximumFractionDigits (2);
System.out.println (df.format (12.3456789));
Maka outputnya adalah: 12.35
3. Ada dua cara untuk mengonversi angka menjadi output persentase:
(1)
Salinan kode adalah sebagai berikut:
df.ApplyPattern ("##. ##%");
System.out.println (df.format (12.3456789));
System.out.println (df.format (1));
System.out.println (df.format (0,015));
Outputnya adalah: 1234,57% 100% 1,5%
(2)
Salinan kode adalah sebagai berikut:
df.setMaximumFractionDigits (2);
System.out.println (df.format (12.3456789*100)+"%");
System.out.println (df.format (1*100)+"%");
System.out.println (df.format (0,015*100)+"%");
Outputnya adalah:
1.234,57% 100% 1,5%
4. Atur Ukuran Grup
Salinan kode adalah sebagai berikut:
Decimalformat df1 = (decimalformat) decimalformat.getInstance ();
df1.setgroupingSize (2);
System.out.println (df1.format (123456789));
Output: 1,23,45,67,89
Anda juga dapat menonaktifkan pengaturan pengelompokan oleh df1.setgroupedused (false);
Salinan kode adalah sebagai berikut:
Decimalformat df1 = (decimalformat) decimalformat.getInstance ();
df1.setgroupingSize (2);
df1.setgroupingused (false);
System.out.println (df1.format (123456789));
Output: 123456789
5. Atur desimal ke 2 digit
Salinan kode adalah sebagai berikut:
Decimalformat df2 = (decimalformat) decimalformat.getInstance ();
df2.applypattern ("0,00");
System.out.println (df2.format (1.2));
Output: 1.20
Terkadang kita perlu mengontrol format nomor output.
Mungkin Anda tidak peduli dengan formatnya, tetapi Anda perlu peduli dengan program Anda yang universal di seluruh dunia.
System.out.println (1234.56);
Di Amerika Serikat, "." Bagaimana cara menangani ini?
Beberapa paket dalam paket java.text dapat menangani masalah jenis ini. Contoh sederhana berikut menggunakan kelas -kelas tersebut untuk menyelesaikan masalah yang diangkat di atas:
Salinan kode adalah sebagai berikut:
impor java.text.numberformat;
impor java.util.locale;
kelas publik decimalformat1 {
public static void main (string args []) {
// Dapatkan format default lokal
NumberFormat nf1 = numberFormat.getInstance ();
System.out.println (nf1.format (1234.56));
// Dapatkan format Jerman
NumberFormat NF2 =
NumberFormat.getInstance (locale.german);
System.out.println (nf2.format (1234.56));
}}
Jika Anda berada di Amerika Serikat, setelah menjalankan program, output:
1.234.56
1.234,56
Dengan kata lain, gunakan kebiasaan yang berbeda untuk mewakili angka di tempat yang berbeda.
Metode numberFormat.getInstance () mengembalikan instance dari NumberFormat (sebenarnya subkelas spesifik dari NumberFormat, seperti DecimalFormat), yang cocok untuk memformat angka berdasarkan pengaturan lokal. Anda juga dapat menggunakan pengaturan regional non-default, seperti Jerman. Metode pemformatan kemudian memformat angka sesuai dengan aturan regional tertentu. Program ini juga dapat digunakan dalam bentuk sederhana:
NumberFormat.getInstance (). Format (1234.56)
Tetapi menyimpan format dan kemudian menggunakan kembali itu lebih efisien. Internasionalisasi adalah masalah besar saat memformat angka.
Lainnya kontrol yang efektif atas format, seperti menentukan jumlah digit di bagian fraksional.
Salinan kode adalah sebagai berikut:
impor java.text.decimalformat;
impor java.util.locale;
kelas publik decimalformat2 {
public static void main (string args []) {
// Dapatkan format default lokal
Decimalformat df1 = decimalformat baru ("###. 000");
System.out.println (df1.format (1234.56));
// Dapatkan format Jerman
Locale.setDefault (locale.german);
Decimalformat df2 = new decimalformat ("###. 000");
System.out.println (df2.format (1234.56));
}
}
Dalam contoh ini, format angka diatur, menggunakan simbol seperti "####. 000". Mode ini berarti ada empat angka sebelum titik desimal. Output Program:
1234.560
1234.560
Demikian pula, format dalam bentuk eksponensial juga dapat dikontrol, misalnya:
Salinan kode adalah sebagai berikut:
impor java.text.decimalformat;
kelas publik decimalformat3 {
public static void main (string args []) {
Decimalformat df = decimalformat baru ("0.000e0000");
System.out.println (df.format (1234.56));
}
}
Keluaran:
1.235E0003
Untuk persentase:
Salinan kode adalah sebagai berikut:
impor java.text.numberformat;
kelas publik decimalformat4 {
public static void main (string args []) {
NumberFormat nf = numberFormat.getpercentInstance ();
System.out.println (nf.format (0,47));
}
}
Keluaran:
47%
Sejauh ini, Anda telah melihat beberapa teknik berbeda untuk memformat angka. Di sisi lain, bagaimana cara membaca dan menguraikan string yang berisi nomor yang diformat? Dukungan resolusi termasuk dalam NumberFormat. Misalnya:
Salinan kode adalah sebagai berikut:
impor java.util.locale;
impor java.text.numberformat;
impor java.text.parseexception;
kelas publik decimalformat5 {
public static void main (string args []) {
// format lokal
NumberFormat nf1 = numberFormat.getInstance ();
Objek obj1 = null;
// Parsing berbasis format
mencoba {
obj1 = nf1.parse ("1234,56");
}
Catch (ParseException E1) {
System.err.println (E1);
}
System.out.println (OBJ1);
// Format Jerman
NumberFormat NF2 =
NumberFormat.getInstance (locale.german);
Objek obj2 = null;
// Parsing berbasis format
mencoba {
obj2 = nf2.parse ("1234,56");
}
Catch (ParseException E2) {
System.err.println (E2);
}
System.out.println (OBJ2);
}
}
Contoh ini dibagi menjadi dua bagian, yang keduanya menguraikan string: "1234,56". Bagian pertama menggunakan format lokal untuk diurai, sedangkan bagian kedua menggunakan format Jerman untuk menguraikan. Ketika program berjalan di Amerika Serikat, hasilnya adalah:
123456
1234.56
Dengan kata lain, "1234.56" dianggap sebagai bilangan bulat besar 123456 di Amerika Serikat, dan desimal "1234,56" di Jerman.
Ada juga pertanyaan terakhir tentang format diskusi. Dalam contoh di atas, baik desimalformat dan numberformat digunakan. DecimalFormat sering digunakan untuk mendapatkan kontrol format yang baik, sedangkan NumberFormat sering digunakan untuk menentukan daerah yang berbeda dari lokal. Bagaimana cara menggabungkan dua kategori?
Jawabannya berkisar pada fakta bahwa DecimalFormat adalah subclass dari NumberFormat, yang contohnya ditentukan sebagai wilayah tertentu. Oleh karena itu, Anda dapat menentukan suatu wilayah menggunakan numberFormat.getInstance dan kemudian melemparkan struktur ke objek decimalformat. Dokumentasi tersebut menyebutkan bahwa teknik ini dapat diterapkan dalam banyak kasus, tetapi Anda perlu menggunakan blok mencoba/menangkap untuk mengelilingi gips jika konversi tidak berfungsi dengan baik (mungkin menggunakan area aneh dalam situasi yang sangat tidak mencolok). Berikut adalah contoh seperti ini:
Salinan kode adalah sebagai berikut:
impor java.text.decimalformat;
impor java.text.numberformat;
impor java.util.locale;
kelas publik decimalformat6 {
public static void main (string args []) {
Decimalformat df = null;
// Dapatkan objek NumberFormat dan
// dilemparkan ke objek decimalformat
mencoba {
df = (decimalformat)
NumberFormat.getInstance (locale.german);
}
Catch (ClasscastException e) {
System.err.println (e);
}
// atur mode format
df.ApplyPattern ("####. 00000");
// Format angka
System.out.println (df.format (1234.56));
}
}
Metode getInstance () memperoleh format, dan kemudian memanggil metode ApplyPattern () untuk mengatur mode format, dan output:
1234.56000
Jika Anda tidak peduli tentang internasionalisasi, Anda dapat menggunakan Decimalformat secara langsung.