Conserver deux virgules décimales dans les nombres à virgule flottante
Lorsque vous travaillez avec des nombres à virgule flottante, il est souvent souhaitable de les limiter à un nombre spécifique. nombre de points décimaux. Cependant, la simple utilisation de la fonction round() peut conduire à des résultats inattendus, comme en témoigne le comportement suivant :
>>> a 13.949999999999999 >>> round(a, 2) 13.949999999999999
Cela se produit parce que les nombres à virgule flottante ont des limites pour représenter tous les nombres avec précision. Les valeurs stockées en mémoire ne sont pas toujours les mêmes que celles affichées.
Comprendre la précision à virgule flottante
Les nombres à virgule flottante double précision, utilisés en Python, ont environ 16 chiffres de précision. Cela signifie que des nombres comme 13,95 sont représentés d'une manière similaire à :
125650429603636838/(2**53)
Lors de l'application de la fonction round(), le résultat est toujours la même valeur à virgule flottante, représentée en interne avec les mêmes limitations.
>>> 125650429603636838/(2**53) 13.949999999999999
Méthodes alternatives pour limiter les points décimaux
Si vous n'en affichez que deux Les décimales sont essentielles, envisagez ces alternatives :
Exemples :
>>> a = 13.946 >>> print("%.2f" % a) 13.95 >>> print("{:.2f}".format(a)) 13.95 # Using decimal module >>> import decimal >>> a = decimal.Decimal('13.946') >>> a.quantize(decimal.Decimal('.01')) Decimal('13.95')
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!