Apa yang saya inginkan adalah metode untuk mengkonversi ganda menjadi string yang dibulatkan menggunakan metode setengah naik - yaitu jika desimal yang dibulatkan adalah 5, selalu dibulatkan ke angka berikutnya. Ini adalah metode standar pembulatan yang kebanyakan orang harapkan dalam kebanyakan situasi.
Saya juga ingin hanya digit signifikan yang ditampilkan - yaitu tidak boleh ada nol tambahan.
Saya tahu salah satu metode melakukan ini adalah dengan menggunakan String.format
metode ini:
String.format("%.5g%n", 0.912385);
pengembalian:
0.91239
yang hebat, namun selalu menampilkan angka dengan 5 tempat desimal meskipun tidak signifikan:
String.format("%.5g%n", 0.912300);
pengembalian:
0.91230
Metode lain adalah dengan menggunakan DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
pengembalian:
0.91238
Namun seperti yang Anda lihat ini menggunakan pembulatan setengah-setengah. Itu akan dibulatkan ke bawah jika angka sebelumnya genap. Yang saya suka adalah ini:
0.912385 -> 0.91239
0.912300 -> 0.9123
Apa cara terbaik untuk mencapai ini di Jawa?