Saya memiliki metode gila kecil ini yang mengubah nilai BigDecimal menjadi String yang bagus dan mudah dibaca.
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
Namun demikian, juga menghasilkan pemisah pengelompokan yang disebut ","
yang membuat semua nilai saya keluar seperti ini:
xxx,xxx
Saya membutuhkan separator untuk menjadi titik atau titik dan bukan koma. Apakah ada yang punya petunjuk tentang bagaimana mencapai prestasi kecil ini?
Saya telah membaca ini dan khususnya ini sampai mati sekarang, tetapi saya tidak dapat menemukan cara untuk menyelesaikan ini. Apakah saya mendekati ini dengan cara yang salah? Apakah ada cara yang jauh lebih elegan untuk melakukan ini? Mungkin bahkan solusi yang mewakili representasi nomor lokal yang berbeda, karena koma akan sempurna dengan standar Eropa.
java
android
bigdecimal
decimal-point
decimalformat
MiraFayless
sumber
sumber
Jawaban:
Anda dapat mengubah pemisah dengan mengatur lokal atau menggunakan DecimalFormatSymbols .
Jika Anda ingin pemisah pengelompokan menjadi sebuah titik, Anda dapat menggunakan lokal Eropa:
Atau Anda dapat menggunakan kelas DecimalFormatSymbols untuk mengubah simbol yang muncul dalam angka yang diformat yang dihasilkan oleh metode format. Simbol-simbol ini termasuk pemisah desimal, pemisah pengelompokan, tanda minus, dan tanda persen, antara lain:
currentLocale dapat diperoleh dari Locale.getDefault () yaitu:
sumber
String formatString = "#,###,###,##0.00";
lihat docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html untuk sintaksisLocale.UK
akan kembali1,567.90
dan tidak 1.567,90NumberFormat.getNumberInstance()
dapat berjalan sangat lambat pada beberapa perangkat Android 7. Alternatifnya adalahString.format()
yang berjalan cepat. Lihat stackoverflow.com/questions/2379221/java-currency-number-formatEropa cukup besar. Saya tidak yakin apakah mereka menggunakan format yang sama. Namun ini atau ini jawabannya akan sangat membantu.
Yaitu menggunakan lokal yang benar.
sumber
sumber
BigDecimal tampaknya tidak menghargai pengaturan Lokal.
Lokal Slovenia harus memiliki koma desimal. Kira saya punya kesalahpahaman aneh tentang angka.
Saya telah mengedit bagian dari pesan saya yang tidak masuk akal karena terbukti karena kesalahan manusia (lupa melakukan data dan melihat hal yang salah).
Sama seperti BigDecimal dapat dikatakan untuk semua fungsi Java .toString (). Saya kira itu bagus dalam beberapa hal. Serialisasi misalnya atau debugging. Ada representasi string yang unik.
Juga seperti orang lain yang disebutkan menggunakan formatters berfungsi OK. Cukup gunakan formatters, sama untuk frontend JSF, formatters melakukan pekerjaan dengan benar dan mengetahui lokal.
sumber
sumber