Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengelak Ralat Pembundaran Semasa Mengira dengan Beregu di Jawa?

Bagaimanakah Saya Boleh Mengelak Ralat Pembundaran Semasa Mengira dengan Beregu di Jawa?

Susan Sarandon
Lepaskan: 2024-12-22 05:11:14
asal
474 orang telah melayarinya

How Can I Avoid Rounding Errors When Calculating with Doubles in Java?

Menyelesaikan Isu Pembundaran Berganda Java

Di Java, melakukan pengiraan dengan nombor titik terapung berketepatan dua kadangkala boleh membawa kepada keputusan yang tidak dijangka disebabkan oleh ralat pembundaran. Untuk menangani isu ini, adalah penting untuk memahami aritmetik titik terapung Java dan menggunakan penyelesaian yang sesuai.

Apabila menolak nilai berganda, ralat pembundaran kecil mungkin terkumpul, mengakibatkan pengiraan yang salah. Pertimbangkan coretan kod berikut:

double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
double netToCompany = targetPremium.doubleValue() - tempCommission;
double dCommission = request.getPremium().doubleValue() - netToCompany;
Salin selepas log masuk

Dalam contoh ini, hasil komisen yang dijangkakan ialah 877.85, tetapi pengiraan menghasilkan 877.8499999999999 disebabkan oleh ralat pembundaran.

Penyelesaian: Menggunakan BigDecimal

Untuk memastikan pengiraan yang tepat, adalah disyorkan untuk menggunakan java.math.BigDecimal. Kelas ini menyediakan aritmetik titik terapung ketepatan yang menangani had jenis data berganda.

Menulis semula baris terakhir kod menggunakan BigDecimal:

BigDecimal commission = premium.subtract(netToCompany);
Salin selepas log masuk

Pendekatan ini menghapuskan ralat pembundaran dan menghasilkan yang betul hasil:

System.out.println(commission + " = " + premium + " - " + netToCompany);
Salin selepas log masuk

Output:

877.85 = 1586.6 - 708.75
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Ralat Pembundaran Semasa Mengira dengan Beregu di Jawa?. 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