Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengatasi Ralat Titik Terapung Sambil Memelihara Ketepatan dalam Pengiraan?
Cara Mengendalikan Ralat Titik Terapung Tanpa Mengorbankan Ketepatan
Apabila bekerja dengan aritmetik titik terapung, anda mungkin menghadapi ralat disebabkan sifat anggaran perwakilannya. Ini boleh menimbulkan cabaran apabila menyasarkan ketepatan yang tinggi dalam pengiraan anda.
Satu pendekatan untuk menangani isu ini ialah memahami batasan perwakilan titik terapung. Dalam Python, titik terapung binari yang digunakan ("kepersisan berganda") biasanya mewakili nilai perpuluhan menggunakan anggaran. Ini bermakna menambah nilai kecil seperti 0.01 adalah tidak tepat dan boleh mengakibatkan ralat yang tidak dijangka, seperti dalam contoh yang diberikan:
<code class="python">def sqrt(num): root = 0.0 while root * root < num: root += 0.01 return root</code>
Untuk mengelakkan ralat sedemikian, anda boleh menggunakan modul perpuluhan Python. Jenis Perpuluhan membolehkan aritmetik perpuluhan yang tepat, memastikan bahawa nilai seperti 0.01 diwakili dengan tepat. Dengan mengubah suai fungsi sqrt untuk menggunakan jenis Perpuluhan, anda boleh menghapuskan ralat pembundaran:
<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>
Sebagai alternatif, jika berpegang pada terapung diutamakan, anda boleh menambah pengiraan anda menggunakan nilai yang boleh diwakili dengan tepat sebagai apungan binari. Ini melibatkan penggunaan nilai dalam bentuk I/2**J, seperti 0.125 (1/8) atau 0.0625 (1/16).
Selain itu, menggunakan kaedah Newton untuk mengira punca kuasa dua juga boleh meningkatkan ketepatan apabila berurusan dengan aritmetik titik terapung.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Ralat Titik Terapung Sambil Memelihara Ketepatan dalam Pengiraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!