Bagaimana cara memformat angka di Java?
Apa itu "Praktik Terbaik"?
Apakah saya perlu membulatkan angka sebelum saya memformatnya?
32.302342342342343
=>32.30
.7323
=>0.73
dll.
java
number-formatting
ScArcher2
sumber
sumber
Double.valueOf
bukannew Double(number).doubleValue()
. Baris terakhir dari contoh terakhir adalahdouble dd2dec = Double.valueOf(df2.format(dd));
Anda dan
String.format()
akan menjadi sahabat baru!https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
sumber
String.format
untuk memformat string, bukan angka.DecimalFormat
. DanDecimalFormat
sedikit lebih cepat dariString.format
. SederhanaSystem.currentTimeMillis
Perbedaan mengungkapkan hal itu.Ketahuilah bahwa kelas yang turun dari NumberFormat (dan sebagian besar keturunan Format lainnya) tidak disinkronkan. Ini adalah praktik umum (tapi berbahaya) untuk membuat objek format dan menyimpannya dalam variabel statis di kelas util. Dalam praktiknya, ini akan selalu berfungsi sampai mulai mengalami beban yang signifikan.
sumber
Angka bulat, ya. Ini adalah sumber contoh utama .
sumber
Coba ini:
Sederhana dan efisien.
sumber
Gunakan DecimalFormat .
sumber
Ada dua pendekatan di perpustakaan standar. Salah satunya adalah dengan menggunakan java.text.DecimalFormat. Metode lain yang lebih samar (String.format, PrintStream.printf, dll) berbasis java.util.Formatter harus membuat programmer C senang (ish).
sumber
Seperti yang ditunjukkan Robert dalam jawabannya: DecimalFormat tidak disinkronkan dan API juga tidak menjamin keamanan utas (mungkin bergantung pada versi / vendor JVM yang Anda gunakan).
Gunakan Spring's Numberformatter sebagai gantinya, yang aman untuk thread.
sumber
Misalnya, jika nilai ganda yang diteruskan ke metode formatDouble () adalah 345.9372, berikut ini adalah hasilnya: 345.937 Demikian pula, jika nilai .7697 diteruskan ke metode, berikut ini adalah hasilnya: .770
sumber