Rumah > Java > javaTutorial > Mengapa Jenis `double` Java Menghasilkan Keputusan Tidak Tepat dalam Pengiraan Kewangan?

Mengapa Jenis `double` Java Menghasilkan Keputusan Tidak Tepat dalam Pengiraan Kewangan?

Susan Sarandon
Lepaskan: 2024-12-06 12:51:14
asal
267 orang telah melayarinya

Why Does Java's `double` Type Produce Inaccurate Results in Financial Calculations?

Masalah Ketepatan dengan Pengiraan Berganda Java: Kajian Kes

Cabaran timbul apabila berurusan dengan aritmetik titik terapung berketepatan dua di Jawa. Seperti yang digambarkan dalam coretan kod, penolakan nilai bulat boleh membawa kepada hasil yang tidak dijangka disebabkan oleh pengehadan ketepatan yang wujud.

Khususnya, isu ini berpunca daripada rangkaian pengiraan:

  • Komisen temp: 78.75 (bulat)
  • netToCompany: 708.74 ralat.
  • Menjinakkan Binatang Ketepatan: Memperkenalkan BigDecimal

Untuk menangani isu ketepatan ini, Java menyediakan kelas java.math.BigDecimal, yang menawarkan aritmetik perpuluhan ketepatan arbitrari .

Dalam kes ini, kod akan diubah suai sebagai berikut:

Dengan BigDecimal, hasilnya dikira dengan tepat dan dipaparkan:

import java.math.BigDecimal;

BigDecimal premium = BigDecimal.valueOf("1586.6");
BigDecimal netToCompany = BigDecimal.valueOf("708.75");
BigDecimal commission = premium.subtract(netToCompany);
System.out.println(commission + " = " + premium + " - " + netToCompany);
Salin selepas log masuk
Kesimpulan

877.85 = 1586.6 - 708.75
Salin selepas log masuk
Apabila berurusan dengan ketepatan-sensitif pengiraan di Jawa, adalah penting untuk memanfaatkan BigDecimal untuk mengelakkan perangkap titik terapung aritmetik. Dengan menerima keupayaan ketepatan sewenang-wenangnya, pembangun boleh memastikan hasil yang tepat dan boleh dipercayai, walaupun dalam senario kompleks seperti yang diterangkan di atas.

Atas ialah kandungan terperinci Mengapa Jenis `double` Java Menghasilkan Keputusan Tidak Tepat dalam Pengiraan Kewangan?. 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