Maison >développement back-end >Tutoriel Python >Comment puis-je comparer avec précision des nombres à virgule flottante pour une quasi-égalité en Python ?
Comparaison des flotteurs pour une quasi-égalité en Python : un examen plus approfondi
En raison de problèmes potentiels d'arrondi et de précision, la comparaison des flotteurs pour une égalité exacte dans Python peut être un défi. Il s'agit d'un problème bien connu, comme le souligne le billet de blog « Comparing Floating Point Numbers, 2012 Edition » de Bruce Dawson. Pour relever efficacement ce défi en Python, plusieurs approches peuvent être envisagées.
Fonctions de bibliothèque standard
Python 3.5 a introduit math.isclose() et cmath.isclose() fonctions, spécialement conçues pour comparer des flotteurs avec un niveau de tolérance. Ces fonctions acceptent trois arguments :
Si la différence absolue entre a et b est inférieure à rel_tol * max(abs(a), abs(b)) ou abs_tol, les valeurs sont considérées comme égales.
Fonction personnalisée pour les versions Python antérieures
Si vous utilisez une version Python antérieure à 3.5, vous pouvez implémenter votre propre fonction isclose() basée sur l'extrait de code suivant fourni dans la documentation :
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)
Cette fonction personnalisée offre les mêmes fonctionnalités que la fonction de bibliothèque standard, vous permettant de comparer des flotteurs dans une plage de tolérance spécifiée.
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!