Rumah > Java > javaTutorial > Mengapa Menambah 0.04 Berulang kali dalam Java Membawa kepada Keputusan Yang Tidak Dijangka?

Mengapa Menambah 0.04 Berulang kali dalam Java Membawa kepada Keputusan Yang Tidak Dijangka?

DDD
Lepaskan: 2024-11-10 05:48:02
asal
564 orang telah melayarinya

Why Does Adding 0.04 Repeatedly in Java Lead to Unexpected Results?

Percanggahan Titik Terapung di Java: Had Ketepatan

Dalam atur cara Java, adalah mungkin untuk menghadapi gelagat pelik apabila menjumlahkan nilai titik terapung . Seperti yang diperhatikan dalam pertanyaan, gelung mudah menambah 0.04 kepada tatasusunan 25 nilai berganda menghasilkan hasil dengan gelagat yang tidak dijangka.

Nilai titik terapung, seperti IEEE tunggal dan beregu, biasanya digunakan dalam bahasa pengaturcaraan. Walau bagaimanapun, format ini tidak mewakili kebanyakan pecahan perpuluhan dengan tepat. Ini disebabkan oleh perwakilan titik terapung binari mereka, yang pada asasnya berbeza daripada titik terapung perpuluhan.

Secara khusus, satu-satunya nilai pecahan yang boleh diwakili tepat dalam titik terapung binari ialah jumlah kuasa negatif dua , seperti 0.5 (2^-1), 0.125 (2^-3), atau 0.625 (2^-1 2^-3). Apabila pecahan perpuluhan tidak boleh diwakili dengan tepat sebagai jumlah sedemikian, hasilnya ialah anggaran sedikit.

Dalam contoh yang diberikan, nilai 0.96 tidak boleh dinyatakan dengan tepat sebagai jumlah kuasa negatif dua. Oleh itu, apabila ia ditambah kepada 0.04 dan dicetak dengan ketepatan perpuluhan penuh, hasilnya menyimpang sedikit daripada nilai asalnya.

Had ketepatan ini wujud dalam perwakilan titik terapung binari dan harus diambil kira semasa bekerja dengan pengiraan titik terapung. Dalam kes di mana ketepatan yang tepat adalah penting, menggunakan perwakilan atau algoritma alternatif mungkin diperlukan.

Atas ialah kandungan terperinci Mengapa Menambah 0.04 Berulang kali dalam Java Membawa kepada Keputusan 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan