Rumah > Java > javaTutorial > teks badan

Mengapakah gelung menjumlahkan 0.04 dalam Java menghasilkan ralat pembundaran yang tidak dijangka?

Susan Sarandon
Lepaskan: 2024-11-19 14:00:04
asal
487 orang telah melayarinya

Why does a loop summing 0.04 in Java result in unexpected rounding errors?

Ralat Pembundaran Titik Terapung dalam Java

Dalam atur cara Java, gelung menjumlahkan nilai 0.04 kepada dirinya sendiri 25 kali menghasilkan hasil yang tidak dijangka antara lelaran ke-6 dan ke-10. Daripada menambah sebanyak 0.04 seperti yang dijangkakan, jumlah pusingan kepada nilai tidak betul seperti 0.24000000000000002 dan 0.39999999999999997.

Tingkah laku aneh ini disebabkan oleh sifat aritmetik titik terapung. Nilai titik terapung diwakili menggunakan format titik terapung binari, yang tidak boleh mewakili banyak pecahan perpuluhan dengan tepat. Sebaliknya, mereka menyimpan nilai sebagai jumlah kuasa negatif dua.

Sebagai contoh, 0.5 boleh diwakili tepat sebagai 2^-1, dan 0.125 sebagai 2^-3. Walau bagaimanapun, nilai perpuluhan 0.96 tidak boleh diwakili dengan tepat sebagai jumlah kuasa negatif dua, mengakibatkan ralat pembundaran sedikit apabila disimpan dalam pembolehubah titik terapung.

Apabila melakukan operasi aritmetik pada nilai titik terapung, ralat pembundaran ini boleh terkumpul, menyebabkan jumlah menyimpang daripada nilai yang dijangkakan. Inilah sebabnya mengapa jumlah 25 lelaran 0.04 tidak kekal sebagai gandaan integer tepat 0.04.

Atas ialah kandungan terperinci Mengapakah gelung menjumlahkan 0.04 dalam Java menghasilkan ralat pembundaran yang tidak dijangka?. 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