singkat
Pola DecimalFormat mengandung sub-pola positif dan negatif, seperti "#, ## 0,00; (#, ## 0,00)":
/*** Dibuat oleh Shuai pada 2016/7/11. */kelas publik utama {public static void main (string [] args) {// nilai positif bigdecimal bigdecimal = bigdecimal.valueof (-1221115151515151.541666); // Nilai negatif BigDecimal BigDecimal2 = BigDecimal.Valueof (1221115151515151.541666); Pola String = "#, ## 0.00; (#, ## 0.00)"; Decimalformat decimalformat = decimalformat baru (pola); decimalformat.format (BigDecimal); System.out.println (decimalformat.format (BigDecimal)); System.out.print (decimalformat.format (BigDecimal2)); }}Keluaran:
(12.211.151.515.151.54) 12.211.151.515.151.54
Setiap sub-pola terdiri dari awalan, bagian numerik dan akhiran. Misalnya, pola positif dan negatif di atas hanya dapat memiliki awalan dan sufiks yang berbeda. Bagian numerik mengambil pola positif secara default, yang berarti bahwa "#, ## 0,0#; (#)" setara dengan "#, ## 0,0#; (#, ## 0,0#)" . ; Pola negatif sesudahnya adalah opsional, dan tidak ada, jika tidak, nilai negatif akan ditampilkan dalam bentuk default (awalan adalah " -" di sebagian besar wilayah), seperti -12.211.151.515.151.54 . Menariknya, untuk nilai 0, pola positif akan diambil:
kelas publik {public static void main (string [] args) {BigDecimal BigDecimal = BigDecimal.ValueOf (-0.00); BigDecimal BigDecimal2 = BigDecimal.valueof (0,00); Pola string = "0,00; (0,00)"; Decimalformat decimalformat = decimalformat baru (pola); decimalformat.format (BigDecimal); System.out.println (decimalformat.format (BigDecimal)); System.out.print (decimalformat.format (BigDecimal2)); }}Keluaran:
0.000.00
Decimalformat dapat mengurai string secara langsung:
System.out.print (decimalformat.parse (",,, 1.515.115.26262", parseposisi baru (0)));Keluaran:
1515115.26262
Seperti yang Anda lihat, metode decimalformat.parse secara otomatis dihapus . Sebelumnya , harus dicatat di sini bahwa karakter pertama dari string yang diuraikan harus berupa angka, atau diikuti oleh angka, jika tidak, pengecualian akan dilemparkan atau diuraikan sebagai nol . Parameter kedua parse menentukan posisi karakter pertama yang akan diuraikan. Posisi contoh di atas 0, 1, 2, 3 semuanya diuraikan dari 1, dan 4, 5 semuanya diuraikan dari 5, yaitu, jika diambil , bit diisi oleh nomor di sebelahnya. Jika ada karakter lain kecuali dan angka muncul sebelum parse , parse parse parse parse ke digit sebelumnya dari karakter ini, atau jika ada karakter lain kecuali angka muncul setelah pares (termasuk , ) maka parse parse parse parse parse parse ke digit karakter ini sebelumnya.
Jika pola berisi beberapa kelompok karakter dengan angka yang berbeda, misalnya: "#, ##, ###, ####", maka ia menggunakan grup selanjutnya, yaitu, "#, ##, ###, ####" == "####" #### "==" ################################################################ ############# ########### ##### ##### ##### ##### ######
kelas publik {public static void main (string [] args) {BigDecimal BigDecimal = BigDecimal.ValueOf (65652323265.626262); String Pattern = "#, ##, ##, ###, ### 0.00"; String pola2 = "#####, ### 0.00"; String pola3 = "##, ####, ### 0.00"; Decimalformat decimalformat = decimalformat baru (pola); System.out.println (decimalformat.format (BigDecimal)); decimalformat.applypattern (pola2); System.out.println (decimalformat.format (BigDecimal)); decimalformat.applypattern (pola3); System.out.println (decimalformat.format (BigDecimal)); }}Keluaran:
656.5232.3265.63656.5232.3265.63656.5232.3265.63
Karakter pola khusus
Metode penghitungan ilmiah
1234 dapat direpresentasikan sebagai 1,234 x 10^3, dan pola adalah "0. ### E0", yang akan memformat 1234 menjadi 1.234E3.
Jumlah bilangan bulat:
Jumlah angka signifikan berasal dari jumlah jumlah minimum digit integer dan jumlah maksimum digit desimal. Misalnya, "## 0. ## E0" Jumlah minimum digit integer adalah 1 dan jumlah maksimum digit desimal adalah 2, maka jumlah yang valid adalah 3, dan 12345 yang diformat adalah "12.3e3". Kecuali untuk nomor yang valid, item lainnya dihilangkan.
Aturan pembulatan numerik
RoundingMode dapat diatur melalui metode decimalformat.setroundingMode. Defaultnya adalah RoundingMode.half_even.
Itu tidak sinkron. Jika diakses oleh banyak utas, Anda harus menerapkan sinkronisasi sendiri
Disarankan untuk membuat instance format terpisah untuk setiap utas. Jika beberapa utas mengakses format secara bersamaan, itu harus disinkronkan secara eksternal.
Contoh
// Cetak angka menggunakan nomor lokal, integer, mata uang, // dan persen format untuk setiap lokal lokal [] locales = numberFormat.getAvailablelocales (); ganda mynumber = -1234.56; Formulir NumberFormat; untuk (int j = 0; j <4; ++ j) {System.out.println ("format"); untuk (int i = 0; i <locales.length; ++ i) {if (locales [i] .getCountry (). length () == 0) {lanjutkan; // lewati local-locales-locales} system.out.print (lokal [i] .getDisplayName ()); switch (j) {case 0: form = numberFormat.getInstance (locales [i]); merusak; kasus 1: form = numberFormat.getIntegerInstance (lokal [i]); merusak; Kasus 2: form = numberFormat.getCurrencyInstance (lokal [i]); merusak; default: form = numberFormat.getpercentInstance (locales [i]); merusak; } if (Form instanceof decimalformat) {System.out.print (":" + ((decimalformat) form) .topattern ()); } System.out.print (" ->" + Form.Format (MyNumber)); coba {System.out.println (" ->" + Form.parse (form.format (myNumber))); } catch (parseException e) {}}}Referensi: Alamat asli
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.