Saat ini saya menggunakan kode berikut untuk mencetak ganda:
return String.format("%.2f", someDouble);
Ini berfungsi dengan baik, kecuali bahwa Java menggunakan pemisah desimal Lokal saya (koma) sementara saya ingin menggunakan titik. Adakah cara mudah untuk melakukan ini?
java
formatting
double
dtech
sumber
sumber
Jawaban:
Gunakan kelebihan
String.format
yang memungkinkan Anda menentukan lokal:Jika Anda hanya memformat angka - seperti Anda di sini - menggunakan
NumberFormat
mungkin akan lebih tepat. Tetapi jika Anda membutuhkan kemampuan pemformatan lainnyaString.format
, ini akan berfungsi dengan baik.sumber
Solusi yang lebih drastis adalah menyetel Lokal Anda lebih awal di main ().
Suka:
sumber
Anda bisa meneruskan Lokal tambahan ke java.lang.String.format serta ke java.io.PrintStream.printf (misalnya System.out.printf ()):
Ini menghasilkan yang berikut (di PC saya):
Lihat String.format di Java API.
sumber
out.printf((Locale)null, ...)
atauout.format((Locale)null, ...)
untuk mendapatkan representasi independen lokal. (dan ada jugaLocale.ROOT
)Terlambat tetapi seperti yang disebutkan lain di sini adalah penggunaan sampel
NumberFormat
(dan subkelasnyaDecimalFormat
)sumber
DecimalFormatSymbols
dan mengatur pemisah harus dilakukan sekali, sebelum metode ini.Anda dapat menggunakan NumberFormat dan DecimalFormat.
Lihatlah tautan ini dari Java Tutorials LocaleSpecific Formatting
Bagian yang berjudul Pemformatan Sensitif-Lokal adalah yang Anda butuhkan.
sumber
Saya memiliki masalah yang sama ..
55.1
berubah menjadi55,10
. Perbaikan cepat saya (kotor?) Adalah:String.format("%.2f", value).replaceAll(",",".");
sumber