Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Membandingkan Nombor Titik Terapung dengan Tepat untuk Kesamaan Hampir dalam Python?

Bagaimanakah Saya Boleh Membandingkan Nombor Titik Terapung dengan Tepat untuk Kesamaan Hampir dalam Python?

DDD
DDDasal
2024-12-22 19:24:11678semak imbas

How Can I Accurately Compare Floating-Point Numbers for Near-Equality in Python?

Membandingkan Terapung untuk Hampir-Kesamaan dalam Python: Pandangan Lebih Dekat

Disebabkan potensi isu pembundaran dan ketepatan, membandingkan terapung untuk kesamaan tepat dalam Python boleh mencabar. Ini adalah isu yang terkenal, seperti yang diserlahkan dalam catatan blog "Membandingkan Nombor Titik Terapung, Edisi 2012" Bruce Dawson. Untuk menangani cabaran ini dengan berkesan dalam Python, beberapa pendekatan boleh dipertimbangkan.

Fungsi Perpustakaan Standard

Python 3.5 memperkenalkan math.iclose() dan cmath.iclose() fungsi, yang direka khusus untuk membandingkan terapung dengan tahap toleransi. Fungsi ini menerima tiga hujah:

  • a dan b: Nilai apungan untuk dibandingkan
  • rel_tol (pilihan): Toleransi relatif, iaitu faktor yang digunakan pada magnitud yang lebih besar daripada a dan b untuk mentakrifkan perbezaan yang dibenarkan
  • abs_tol (pilihan): Toleransi mutlak, yang menetapkan perbezaan minimum ambang

Jika perbezaan mutlak antara a dan b adalah kurang daripada rel_tol * max(abs(a), abs(b)) atau abs_tol, nilainya dianggap sama.

Fungsi Tersuai untuk Versi Python Terdahulu

Jika anda menggunakan versi Python lebih awal daripada 3.5, anda boleh melaksanakan fungsi isclose() anda sendiri berdasarkan coretan kod berikut yang disediakan dalam dokumentasi:

def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
    return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

Fungsi tersuai ini menawarkan fungsi yang sama seperti fungsi perpustakaan standard, membolehkan anda membandingkan terapung dalam julat toleransi yang ditentukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Nombor Titik Terapung dengan Tepat untuk Kesamaan Hampir dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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