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
844 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!

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