Kemarin saya mencoba mengeksplorasi sendiri perilaku metode DecimalFormat .format() dengan semua placeholdernya dan apa fungsinya.
Jadi saya menulis dua angka dan mencoba pola yang berbeda pada angka tersebut. Dengan "#.##" semua angka nol yang tidak signifikan dipotong dan dengan "0000.00" metode ini menambahkan angka nol di depan angka tersebut. Tidak apa-apa, tapi kemudian saya mencoba beberapa pola aneh hanya untuk melihat apa yang akan terjadi.
Dengan pola "33333.##" hasil akhirnya sungguh aneh. Anda dapat melihat kode saya di bawah ini:
DecimalFormat df = new DecimalFormat("33332.##");
double a= 222.46705219;
double b=-102.000;
System.out.println(df.format(a));
System.out.println(df.format(b));
Dan hasilnya adalah:
33332222,47
-33332102,0
Input yang sama dengan angka tetapi dengan pola yang digunakan "33033.##" memberikan hasil:
33222,4732
33102
Saya memahami bahwa program menambahkan angka yang diformat sebagai pengganti 0, tetapi mengapa ketika nol tidak disajikan sebagai pengganti, metode ini masih membulatkan angka pertama dan (tentu saja) angka kedua?
Mengapa angka pertama saya dibulatkan ke angka kedua digit sebagaimana mestinya, tetapi angka kedua (b) dicetak dengan angka nol di akhir?
Dan mengapa ketika placeholder 0 ditampilkan di tengah "33033.##" program menyisipkan angka yang diformat a pada tempatnya tetapi tidak mencetak "33" di akhir angka b?
Saya benar-benar tidak tahu bagaimana menjelaskan perilaku ini.