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
Lepaskan: 2024-12-26 19:39:18
asal
580 orang telah melayarinya

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

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

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!

sumber:php.cn
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