Mengelakkan Ralat Titik Terapung dalam Python
Dalam bidang pengaturcaraan, adalah penting untuk memahami selok-belok pengiraan titik terapung, kerana mereka boleh memperkenalkan ralat yang tidak dijangka jika tidak dikendalikan dengan betul. Artikel ini meneroka contoh praktikal yang menyerlahkan masalah aritmetik titik terapung.
Masalah Akar Kuasa Dua
Pertimbangkan fungsi Python yang direka bentuk untuk menganggarkan punca kuasa dua:
<code class="python">def sqrt(num): root = 0.0 while root * root < num: root += 0.01 return root
Menggunakan fungsi ini, kami menemui hasil yang mengejutkan:
>>> sqrt(4) 2.0000000000000013 >>> sqrt(9) 3.00999999999998</code>
Aritmetik titik terapung menerangkan ketidaktepatan ini. Apabila mewakili nombor pecahan, komputer menyimpannya sebagai gabungan integer dan eksponen. Disebabkan oleh pengehadan dalam perwakilan ini, nilai perpuluhan tertentu tidak boleh diwakili dengan tepat, membawa kepada anggaran.
Memahami Ralat
Dalam kod di atas, isunya terletak pada kenaikan yang digunakan untuk meningkatkan nilai akar. Walaupun kami berhasrat untuk menambah nilai 0.01, nilai sebenar yang disimpan dalam daftar titik terapung adalah sedikit berbeza dan lebih besar daripada 0.01.
Mengatasi Ralat
Untuk mengelakkan ralat titik terapung, pelbagai pendekatan boleh digunakan:
<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
Now, the function returns precise results, such as: ``` >>> sqrt(4) Decimal('2.00') >>> sqrt(9) Decimal('3.00') ``` </code>
Atas ialah kandungan terperinci Bagaimana untuk Mengurangkan Ralat Titik Terapung dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!