Bagaimana cara mengatur pemisah ribuan di Jawa?
Saya memiliki representasi String dari BigDecimal yang ingin saya format dengan pemisah ribuan dan kembali sebagai String.
java
bigdecimal
Funtime
sumber
sumber
Jawaban:
Ini harus bekerja (belum diuji, berdasarkan JavaDoc):
Menurut JavaDoc, para pemain di baris pertama harus disimpan untuk sebagian besar lokal.
sumber
getDecimalFormatSymbols()
mengatakan:Returns: a copy of the desired DecimalFormatSymbols
. Jadi sebaiknya Anda gunakansetDecimalFormatSymbols(theCopy)
setelah mengubah salinan.new
dan mengaturnya kembali ke formatter:DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
Anda dapat menggunakan fungsi format dengan ",";
"," termasuk karakter pengelompokan khusus lokal.
docs
sumber
.
sebagai pemisah?format()
dengan lokal eksplisit (Local.US
dikenal dengan penggunaan,
sebagai pemisah) dan kemudian mengganti,
dengan pemisah kustom Anda:String.format(Locale.US, "%,d", n).replace(',', '.')
.int
. Atau along
. Atau aBigInteger
. Dan gunakan f jika Anda ingin menggunakandouble
,float
atauBigDecimal
.EDIT
Untuk mendapatkan pemisah pengelompokan khusus seperti ruang, lakukan ini:
sumber
NumberFormat
objek dengan properti yang diinginkan dan menggunakannya untuk memformatBigDecimal
. ABigDecimal
hanya memiliki nilai yang ditentukan, itu tidak memiliki format yang ditentukan.coba kode ini untuk memformat seperti yang digunakan di Brasil:
sumber
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
Kirim parameter ini untuk dilaporkan.Jika Anda menggunakan ribuan pemisah untuk tipe data Integer gunakan 1.
String.format ("%, d \ n", 58625) dan output akan menjadi 58.625
sumber
sumber
sumber
Jawaban yang diterima harus benar-benar diubah jika tidak berfungsi. The getDecimalFormatSymbols membuat salinan defensif. Jadi,
Baris baru adalah ini: formatter.setDecimalFormatSymbols (simbol);
sumber
Untuk desimal :
sumber
Seperti disebutkan di atas, tautan berikut memberi Anda kode negara tertentu untuk memungkinkan Jawa melokalisasi nomor tersebut. Setiap negara memiliki gayanya sendiri.
Pada tautan di atas Anda akan menemukan kode negara yang harus ditempatkan di sini:
Swiss misalnya memformat angka-angka sebagai berikut:
1000,00 -> 1'000,00
Kode negara
Untuk mencapai hal ini, kode berikut berfungsi untuk saya:
Hasilnya seperti yang diharapkan:
sumber
sumber