Perangkap Aritmetik Titik Terapung: Cara Mengatasinya
Aritmetik titik terapung berasaskan perpuluhan, yang biasa digunakan dalam bahasa pengaturcaraan seperti Python, boleh memperkenalkan ralat halus kerana sifat anggarannya. Memahami ralat ini adalah penting untuk pengiraan yang tepat.
Isunya
Pertimbangkan fungsi Python berikut untuk menganggar punca kuasa dua menggunakan penambahan titik terapung:
<code class="python">def sqrt(num): root = 0.0 while root * root < num: root += 0.01 return root
Fungsi ini, walau bagaimanapun, menghasilkan hasil yang tidak tepat:
<code class="python">>>> sqrt(4) 2.0000000000000013 >>> sqrt(9) 3.00999999999998</code>
Masalah dengan Titik Terapung
Isunya terletak pada fakta bahawa nilai titik terapung Python bukan perwakilan tepat nombor perpuluhan. Sebaliknya, mereka menggunakan perwakilan binari, yang boleh menyebabkan ketidaktepatan apabila berurusan dengan nombor yang tidak boleh diwakili dengan tepat dalam bentuk binari.
Dalam fungsi contoh, penambahan 0.01 tidak bersamaan dengan menambah 1/100 disebabkan oleh perwakilan anggaran ini. Nilai ditambah sebenar adalah lebih besar sedikit daripada 1/100, membawa kepada sedikit anggaran berlebihan.
Mengatasi Ralat Titik Terapung
Untuk mengelakkan ralat ini, pertimbangkan strategi berikut:
Modul perpuluhan Python menyediakan jenis alternatif, Perpuluhan, yang menggunakan perwakilan titik tetap berdasarkan perpuluhan. Ini menawarkan pengiraan yang lebih tepat, seperti yang dilihat dalam fungsi yang diubah suai:
<code class="python">from decimal import Decimal as D def sqrt(num): root = D(0) while root * root < num: root += D("0.01") return root</code>
Berpegang pada titik terapung penambahan yang mewakili pecahan perduaan tepat, seperti 0.125 (1/8) atau 0.0625 (1/16). Ini memastikan bahawa penambahan adalah tepat tanpa memperkenalkan ralat pembundaran.
Memahami dan mengatasi ralat titik terapung adalah penting untuk pengiraan berangka yang tepat. Dengan menggunakan strategi yang sesuai, pembangun boleh meminimumkan ralat ini dan mencapai hasil yang lebih tepat.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Perangkap dalam Aritmetik Titik Terapung untuk Pengiraan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!