Berurusan dengan Pengembangan Perpuluhan Tidak Penamat dan Perpuluhan Besar
Apabila bekerja dengan objek BigDecimal, adalah penting untuk mengetahui potensi bukan- menamatkan pengembangan perpuluhan. Pertimbangkan kod berikut:
BigDecimal a = new BigDecimal("1.6"); BigDecimal b = new BigDecimal("9.2"); a.divide(b)
Kod ini cuba membahagikan dua objek BigDecimal, tetapi sebaliknya menimbulkan pengecualian berikut:
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
Pengecualian ini dilemparkan kerana hasil bagi tepat bagi suatu dan b mempunyai pengembangan perpuluhan tidak tamat. Secara lalai, operasi BigDecimal adalah tepat, bermakna ia mengembalikan hasil yang tepat walaupun ia mempunyai pengembangan perpuluhan tak terhingga. Walau bagaimanapun, apabila ketepatan ditetapkan kepada 0 (seperti yang ditetapkan secara lalai), mod pembundaran diabaikan dan tiada pembundaran dilakukan.
Untuk membetulkan pengecualian ini, anda perlu menentukan mod pembundaran dan ketepatan. Contohnya:
a.divide(b, 2, RoundingMode.HALF_UP)
Dalam kes ini, pembahagian akan dilakukan dengan ketepatan 2 dan hasilnya akan dibundarkan menggunakan mod pembundaran HALF_UP. Ini akan menghasilkan pengembangan perpuluhan terhingga.
Untuk mendapatkan maklumat lanjut tentang mengendalikan pengembangan perpuluhan yang tidak ditamatkan dengan BigDecimal, rujuk dokumentasi Java atau sumber yang berkaitan seperti catatan blog dan tutorial.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pengembangan Perpuluhan Tidak Menamatkan dengan BigDecimal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!