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.
Lain adalah kontrol yang efektif atas format, seperti menentukan jumlah digit di bagian fraksional. Berikut adalah contoh sederhana untuk menyelesaikan masalah ini:
impor java.text.decimalformat; import java.util.locale; kelas publik decimalformat2 {public static void main (string args []) {// Dapatkan format default lokal decimalformat df1 = new decimalformat ("####. 000"); System.out.println (df1.format (1234.56)); // Dapatkan format Jerman locale.setDefault (locale.german); Decimalformat df2 = decimalformat baru ("####. 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. Jika tidak cukup, itu akan kosong. Jika ada tiga angka setelah titik desimal, itu akan diisi dengan output program 0.
1234.560
1234.560
Demikian pula, format dalam bentuk eksponensial juga dapat dikontrol, misalnya:
impor java.text.decimalformat; kelas publik decimalformat3 {public static void main (string args []) {decimalformat df = new decimalformat ("0.000e0000"); System.out.println (df.format (1234.56));}} Keluaran:
1.235E0003
Untuk persentase:
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:
impor java.util.locale; import java.text.numberformat; import java.text.parseException; kelas publik decimalformat5 {public static void main (string args []) {// format lokal numberFormat nf1 = numberFormat.getInstance (); Objek obj1 = null; // parsing berbasis format coba {obj1 = nf1.parse ("1234,56"); } catch (parseException e1) {system.err.println (e1); } System.out.println (obj1); // format german numberformat nf2 = numberFormat.getInstance (locale.german); Objek obj2 = null; // Parsing berbasis format coba {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 di Amerika Serikat "123456" dan desimal di Jerman "1234,56".
Koneksi desimalformat dan numberformat
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:
impor java.text.decimalformat; import java.text.numberformat; import java.util.locale; kelas publik decimalformat6 {public static void main (string args []) {decimalFormat df = null; // Dapatkan Objek NumberFormat dan // Gol ke Objek DecimalFormat Coba {df = (decimalFormat) numberFormat.getInstance (locale.german); } catch (ClasscastException e) {System.err.println (e); } // atur mode format df.ApplyPattern ("####. 00000"); // Format bilangan system.out.println (df.format (1234.56)); }} Metode getInstance () memperoleh format, dan kemudian memanggil metode ApplyPattern () untuk mengatur mode format, output:
1234.56000
Jika Anda tidak peduli tentang internasionalisasi, Anda dapat menggunakan Decimalformat secara langsung.
Di mana V adalah ganda yang tidak diproses, skala adalah presisi yang diperlukan, dan mengembalikan ganda yang membutuhkan digit desimal.
public static double round (ganda V, int skala) {if (skala <0) {lempar baru ilegalargumentException ("skala harus bilangan bulat positif atau nol"); } BigDecimal b = BigDecimal baru (double.toString (v)); BigDecimal One = BigDecimal baru ("1"); return b.divide (satu, skala, bigdecimal.round_half_up) .doublevalue (); } Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.