Pertama sekali, nyatakan masalah: semasa membina BigDecimal, cuba jangan gunakan nombor titik terapung (double, float), kerana terdapat kekurangan ketepatan dalam penyimpanan nombor titik terapung dalam komputer itu. Contohnya, kod yang anda tulis:
public static void main(String[] args) throws Exception {
double a = 1.505;
BigDecimal bd = new BigDecimal(a);
System.out.println("bd: " + bd.toString());
}
Hasil jalankan:
Seperti yang anda lihat, titik terapung nombor 1.505 tidak boleh disimpan dalam komputer - jika anda tidak tahu sebab tertentu, sila cari sendiri "Masalah kehilangan ketepatan nombor titik terapung"
Kedua, jika anda perlu mengeluarkan 1.51, yang sering dipanggil "pembundaran", maka anda perlu menentukan mod pembundaran DecimalFormat:
public static void main(String[] args) throws Exception {
BigDecimal bd = new BigDecimal("1.505");
System.out.println("bd: " + bd.toString());
DecimalFormat df = new DecimalFormat("#.00");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println("format: " + df.format(bd));
}
Hasil jalankan:
Jika anda tidak memahami penggunaan RoundingMode, sila cari "Penggunaan RoundingMode"
Ketiga, mengenai maksud rentetan dalam kurungan DecimalFormat, sila cari "Penggunaan Format Perpuluhan"
Pertama sekali, nyatakan masalah: semasa membina
BigDecimal
, cuba jangan gunakan nombor titik terapung (double
,float
), kerana terdapat kekurangan ketepatan dalam penyimpanan nombor titik terapung dalam komputer itu. Contohnya, kod yang anda tulis:Hasil jalankan:
Seperti yang anda lihat, titik terapung nombor 1.505 tidak boleh disimpan dalam komputer - jika anda tidak tahu sebab tertentu, sila cari sendiri "Masalah kehilangan ketepatan nombor titik terapung"
Kedua, jika anda perlu mengeluarkan 1.51, yang sering dipanggil "pembundaran", maka anda perlu menentukan mod pembundaran
DecimalFormat
:Hasil jalankan:
Jika anda tidak memahami penggunaan
RoundingMode
, sila cari "Penggunaan RoundingMode"Ketiga, mengenai maksud rentetan dalam kurungan
DecimalFormat
, sila cari "Penggunaan Format Perpuluhan"