Bagaimanakah Kami Boleh Mengendalikan dan Menyelesaikan Ralat Titik Terapung?

Linda Hamilton
Lepaskan: 2024-10-21 14:57:03
asal
543 orang telah melayarinya

How Can We Handle and Resolve Floating-Point Errors?

Memahami Ralat Titik Terapung dan Penyelesaiannya

Aritmetik titik terapung menimbulkan cabaran unik kerana sifat anggarannya. Untuk menangani ralat ini dengan berkesan, kita mesti memeriksa puncanya.

Dalam Python, pengiraan titik terapung menggunakan perwakilan binari, yang membawa kepada ketidaktepatan. Seperti yang ditunjukkan dalam coretan kod, percubaan untuk menganggarkan punca kuasa dua sedikit tersasar disebabkan anggaran ini. Contohnya:

<code class="python">def sqrt(num):
    root = 0.0
    while root * root < num:
        root += 0.01
    return root

print(sqrt(4)) # Output: 2.0000000000000013
print(sqrt(9)) # Output: 3.00999999999998</code>
Salin selepas log masuk

Untuk lebih memahami ralat ini, pertimbangkan perwakilan perpuluhan tepat 0.01 menggunakan modul perpuluhan:

<code class="python">from decimal import Decimal
print(Decimal(.01)) # Output: Decimal('0.01000000000000000020816681711721685132943093776702880859375')</code>
Salin selepas log masuk

Rentetan ini mendedahkan bahawa nilai sebenar yang ditambah adalah sedikit lebih besar daripada 1/100. Oleh itu, perwakilan titik terapung bagi nilai perpuluhan memperkenalkan variasi kecil ini.

Untuk mengurangkan ralat ini, beberapa pendekatan wujud:

  1. Modul Perpuluhan: Menggunakan modul perpuluhan memastikan bahawa operasi dilakukan dengan tepat, menghapuskan ralat pembundaran. Dalam fungsi yang diubah suai di bawah, kami menggunakan pendekatan ini:
<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

print(sqrt(4)) # Output: Decimal('2.00')
print(sqrt(9)) # Output: Decimal('3.00')</code>
Salin selepas log masuk
  1. Tambahan Boleh Kawal: Daripada menambah terus 0.01, adalah dinasihatkan untuk menambah nilai yang betul-betul boleh diwakili sebagai apungan binari, seperti I/2**J. Dengan menggunakan 0.125 (1/8) atau 0.0625 (1/16) sebagai kenaikan, ini menghapuskan ralat anggaran.

Dengan menggabungkan kaedah ini dan teknik memanfaatkan seperti kaedah Newton, anda boleh mencapai terapung yang sangat tepat- pengiraan mata, mengembangkan pemahaman anda tentang analisis berangka dan mengendalikan aritmetik titik terapung dengan berkesan.

Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengendalikan dan Menyelesaikan Ralat Titik Terapung?. 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!