Rumah >Java >javaTutorial >Mengapa Menjumlahkan Gandaan dalam Java Menghasilkan Nilai Yang Tidak Dijangka?

Mengapa Menjumlahkan Gandaan dalam Java Menghasilkan Nilai Yang Tidak Dijangka?

Linda Hamilton
Linda Hamiltonasal
2024-11-10 18:15:02974semak imbas

Why Does Summing Doubles in Java Result in Unexpected Values?

Gelagat Titik Terapung Pelik dalam Program Java

Dalam soalan ini, pengguna menghadapi gelagat pelik semasa menjumlahkan nilai berganda dalam tatasusunan. Secara khusus, hasilnya secara beransur-ansur menyimpang daripada jumlah yang dijangkakan. Fenomena ini boleh dikaitkan dengan cara nilai titik terapung diwakili dalam sistem digital.

IEEE perseorangan dan beregu, perwakilan titik terapung yang paling lazim dalam bahasa pengaturcaraan, menggunakan storan binari dan bukannya storan perpuluhan. Akibatnya, hanya pecahan perpuluhan tertentu boleh diwakili dengan tepat dalam bentuk binari. Pecahan ini terhad kepada nilai yang boleh dinyatakan sebagai jumlah kuasa negatif dua, seperti:

0.5 (2^-1)
0.125 (2^-3)
0.625 (2^-1 + 2^-3)

Pecahan yang tidak boleh diwakili sebagai hasil tambah kuasa negatif dua, seperti 0.96, mengandungi ralat yang wujud dalam perwakilan binari mereka. Apabila pecahan ini dipaparkan sebagai nilai perpuluhan dengan ketepatan lengkap, ia tidak sepadan dengan nilai asal kerana anggaran yang tidak dapat dielakkan ini.

Atas ialah kandungan terperinci Mengapa Menjumlahkan Gandaan dalam Java Menghasilkan Nilai Yang Tidak Dijangka?. 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