Maison > développement back-end > Tutoriel Python > Comment puis-je conserver de manière fiable deux décimales dans les nombres à virgule flottante en Python ?

Comment puis-je conserver de manière fiable deux décimales dans les nombres à virgule flottante en Python ?

Patricia Arquette
Libérer: 2024-12-25 19:25:13
original
932 Les gens l'ont consulté

How Can I Reliably Preserve Two Decimal Places in Floating-Point Numbers in Python?

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
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

Méthodes alternatives pour limiter les points décimaux

Si vous n'en affichez que deux Les décimales sont essentielles, envisagez ces alternatives :

  • Utilisation d'entiers et de mises à l'échelle : représentez les valeurs en cents au lieu de dollars et divisez par 100 pour convertir.
  • Utilisation de la décimale à virgule fixe : utilisez des modules tels que décimal pour stocker et opérer sur des nombres à virgule fixe avec des valeurs spécifiées. précision.

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')
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal