Kemungkinan Duplikat: Cara membulatkan angka ke n tempat desimal di Java
< Akhir dari teks yang disisipkan secara otomatis -->
Saya mengalami kesulitan membulatkan sebuah float ke dua tempat desimal. Saya telah mencoba beberapa metode yang saya lihat di sini termasuk hanya menggunakan Math.round()
, tetapi tidak peduli apa yang saya lakukan saya tetap mendapatkan angka yang tidak biasa.
Saya memiliki daftar float yang sedang saya proses, yang pertama dalam daftar ditampilkan sebagai 1.2975118E7
. Apa yang dimaksud dengan E7
?
Ketika saya menggunakan Math.round(f)
(f adalah float), saya mendapatkan angka yang sama persis.
Saya tahu saya melakukan sesuatu yang salah, saya hanya tidak yakin apa.
Saya hanya ingin angkanya dalam format x.xx
. Angka pertama seharusnya 1.30
, dst.
1.2975118E7
adalah notasi ilmiah.
1.2975118E7 = 1.2975118 * 10^7 = 12975118
Juga, Math.round(f)
mengembalikan sebuah bilangan bulat. Anda tidak dapat menggunakannya untuk mendapatkan format yang anda inginkan x.xx
.
Anda bisa menggunakan String.format
.
String s = String.format("%.2f", 1.2975118);
// 1.30
Jika Anda mencari format mata uang (yang tidak Anda tentukan, tetapi tampaknya itulah yang Anda cari) cobalah kelas NumberFormat
. Ini sangat sederhana:
double d = 2.3d;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String output = formatter.format(d);
Yang akan menghasilkan (tergantung pada lokal):
$2.30
Juga, jika mata uang tidak diperlukan (hanya dua tempat desimal yang tepat) Anda dapat menggunakan ini sebagai gantinya:
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
String output = formatter.format(d);
Yang akan menghasilkan 2.30