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

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

Susan Sarandon
Susan Sarandonasal
2024-12-26 19:39:18566semak imbas

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

Membandingkan Nombor Titik Terapung dengan Ketepatan dalam Python

Dalam bidang pengaturcaraan, membandingkan nombor titik terapung untuk kesaksamaan memberikan cabaran. Seperti yang diserlahkan oleh pakar seperti Bruce Dawson, menentukan kesaksamaan adalah rumit dengan membulatkan ralat dan had ketepatan.

Adakah terdapat Penyelesaian dalam Python?

Python menawarkan pelbagai penyelesaian kepada isu ini. Terutama, Python 3.5 memperkenalkan fungsi math.iclose dan cmath.iclose, mengikut panduan PEP 485. Fungsi ini menyediakan cara yang boleh dipercayai untuk membandingkan nombor titik terapung untuk kesamaan anggaran.

Butiran Pelaksanaan:

import math

# Compare two floating-point numbers for almost-equality
result = math.isclose(0.1, 0.10000000000000001, rel_tol=1e-09, abs_tol=0.0)

Fungsi Tersuai untuk Terdahulu Versi Python:

Untuk versi Python sebelum 3.5, dokumentasi mencadangkan fungsi tersuai berikut:

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)

Parameter Diterangkan:

  • rel_tol: Mentakrifkan toleransi relatif, melaraskan perbezaan yang boleh diterima berdasarkan magnitud daripada nilai yang dibandingkan.
  • abs_tol: Menentukan toleransi mutlak, membenarkan perbandingan langsung tanpa mengambil kira magnitud nombor.

Menggunakan sama ada fungsi math.iclose atau tersuai fungsi memastikan perbandingan tepat nombor titik terapung untuk kesaksamaan anggaran, menangani cabaran yang ditimbulkan oleh isu ketepatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Nombor Titik Terapung dengan Tepat 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