Rumah  >  Artikel  >  Java  >  Mengapa Membahagikan Perpuluhan Besar Tanpa Konteks Matematik Menghasilkan Pengecualian "Peluasan Perpuluhan Tidak Penamat"?

Mengapa Membahagikan Perpuluhan Besar Tanpa Konteks Matematik Menghasilkan Pengecualian "Peluasan Perpuluhan Tidak Penamat"?

Susan Sarandon
Susan Sarandonasal
2024-11-15 09:58:02331semak imbas

Why Does Dividing BigDecimals Without a MathContext Result in a

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn