Rumah > Java > javaTutorial > 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
Lepaskan: 2024-11-15 09:58:02
asal
403 orang telah melayarinya

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 yang tidak ditamatkan; tiada hasil perpuluhan yang boleh diwakili tepat".

Ini kerana hasil bagi pembahagian tertentu (seperti 1 dibahagikan dengan 3) mempunyai pengembangan perpuluhan yang tidak terhingga panjangnya. 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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan