Bagaimana untuk Mengatasi Ralat Titik Terapung Sambil Memelihara Ketepatan dalam Pengiraan?

Susan Sarandon
Lepaskan: 2024-10-21 14:58:02
asal
746 orang telah melayarinya

How to Overcome Floating Point Errors While Preserving Accuracy in Calculations?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!