Maison >développement back-end >Tutoriel Python >Comment puis-je comparer avec précision les nombres à virgule flottante en Python ?
Comparaison de nombres à virgule flottante avec précision en Python
Dans le domaine de la programmation, comparer des nombres à virgule flottante pour l'égalité présente des défis. Comme l'ont souligné des experts comme Bruce Dawson, la détermination de l'égalité est compliquée par les erreurs d'arrondi et les limitations de précision.
Existe-t-il une solution en Python ?
Python offre une myriade de solutions à cette question. Notamment, Python 3.5 introduit les fonctions math.isclose et cmath.isclose, suivant les conseils de la PEP 485. Ces fonctions fournissent un moyen fiable de comparer des nombres à virgule flottante pour une égalité approximative.
Détails de mise en œuvre :
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)
Fonction personnalisée pour Python antérieur Versions :
Pour les versions Python antérieures à 3.5, la documentation suggère la fonction personnalisée suivante :
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)
Paramètres expliqués :
L'utilisation de la fonction math.isclose ou de la fonction personnalisée garantit une comparaison précise de nombres à virgule flottante pour une égalité approximative, répondant aux défis posés par les problèmes de précision.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!