Rumah > Java > javaTutorial > Mengapakah BigDecimal Java Membuang ArithmeticException untuk Pengembangan Perpuluhan Tidak Menamatkan?

Mengapakah BigDecimal Java Membuang ArithmeticException untuk Pengembangan Perpuluhan Tidak Menamatkan?

Mary-Kate Olsen
Lepaskan: 2024-11-15 10:11:02
asal
885 orang telah melayarinya

Why Does Java's BigDecimal Throw an ArithmeticException for Non-Terminating Decimal Expansions?

ArithmeticException Kerana Pengembangan Perpuluhan Tidak Menamatkan

Apabila melakukan operasi bahagi menggunakan kelas BigDecimal Java, anda mungkin menghadapi pengecualian berikut:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
Salin selepas log masuk

Ralat ini berlaku apabila operasi bahagi menghasilkan hasil bahagi perpuluhan dengan pengembangan yang tidak terhingga panjang. Secara lalai, operasi BigDecimal adalah tepat, bermakna ia menghasilkan keputusan matematik yang tepat tanpa pembundaran.

Walau bagaimanapun, kaedah bahagi melemparkan ArithmeticException apabila hasilnya mempunyai pengembangan perpuluhan tanpa penamat dan keputusan yang tepat dijangka (iaitu. , apabila tetapan ketepatan objek MathContext yang digunakan ialah 0).

Untuk menyelesaikan isu ini, anda boleh menentukan tetapan ketepatan bukan sifar untuk objek MathContext. Ini akan memaksa keputusan untuk dibundarkan kepada bilangan tempat perpuluhan yang ditentukan:

a.divide(b, 2, RoundingMode.HALF_UP)
Salin selepas log masuk

Dalam kes ini, 2 ialah skala (bilangan tempat perpuluhan) dan RoundingMode.HALF_UP ialah mod pembundaran untuk digunakan . Dengan menentukan ketepatan, anda boleh memperoleh hasil perpuluhan terhingga dan boleh diwakili.

Atas ialah kandungan terperinci Mengapakah BigDecimal Java Membuang ArithmeticException untuk Pengembangan Perpuluhan Tidak Menamatkan?. 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