Pengecualian Pengembangan Perpuluhan Tidak Penamat dalam Pembahagian Perpuluhan Besar
Apabila membahagikan dua objek Perpuluhan Besar tanpa menyatakan Konteks Matematik, operasi boleh menghasilkan Pengecualian "ArithmeticException: Pengembangan perpuluhan tidak ditamatkan; tiada hasil perpuluhan yang boleh diwakili tepat".
Ini kerana hasil bagi bahagian tertentu (seperti 1 dibahagikan dengan 3) mempunyai pengembangan perpuluhan yang tidak terhingga panjang. Apabila ketepatan ditetapkan kepada 0 (lalai), hasil yang tepat mesti dikira. Jika hasil bagi mempunyai pengembangan tidak tamat, pengecualian akan dilemparkan.
Penyelesaian
Untuk membetulkannya, MathContext dengan skala tertentu dan mod pembundaran mesti disediakan . Kod berikut menunjukkan perkara ini:
a.divide(b, 2, RoundingMode.HALF_UP)
Dalam contoh ini, skala ditetapkan kepada 2 dan mod pembundaran ditetapkan kepada RoundingMode.HALF_UP. Ini memastikan bahawa hasil pembahagian dibundarkan kepada skala tertentu dan pengecualian dielakkan.
Untuk mendapatkan maklumat yang lebih mendalam, rujuk dokumentasi Java 11 BigDecimal atau sumber luaran seperti catatan blog ini.
Atas ialah kandungan terperinci Mengapa Membahagikan Perpuluhan Besar Tanpa Konteks Matematik Menghasilkan Pengecualian "Peluasan Perpuluhan Tidak Penamat"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!