Maison >développement back-end >Tutoriel Python >Comment puis-je arrondir avec précision des nombres à virgule flottante à deux décimales en Python ?

Comment puis-je arrondir avec précision des nombres à virgule flottante à deux décimales en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 05:00:19127parcourir

How Can I Accurately Round Floating-Point Numbers to Two Decimal Places in Python?

Limiter les flottants à deux décimales

Lorsque vous travaillez avec des nombres à virgule flottante, il est essentiel de prendre en compte les limites de ce type de données. En particulier, les nombres à virgule flottante peuvent ne pas représenter exactement certaines valeurs, ce qui entraîne des résultats inattendus lors d'une tentative d'arrondi.

Problème : Lorsque vous essayez d'arrondir un flottant à deux décimales, vous pouvez rencontrez le problème suivant :

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999

Le problème se pose car les nombres à virgule flottante stockent les valeurs sous forme d'entiers divisés par une puissance de deux. Cette représentation peut ne pas capturer toutes les valeurs avec précision. Dans le cas des nombres double précision (utilisés par le type à virgule flottante de Python), ils ont 53 bits (16 chiffres) de précision, tandis que les flottants normaux ont 24 bits (8 chiffres).

Solution :

Pour afficher seulement deux décimales lors de l'arrondi d'un flottant, plusieurs options sont disponibles disponible :

  • Utilisez des nombres entiers et stockez les valeurs en cents : Au lieu de stocker des dollars, stockez les valeurs en cents et divisez par 100 pour les convertir en dollars.
  • Utilisez une bibliothèque de nombres à virgule fixe comme décimal : Les nombres à virgule fixe offrent un contrôle plus précis sur le nombre de décimales lieux.

Exemples :

>>> a = 13.946
>>> print("%.2f" % a)
13.95
>>> print("{:.2f}".format(a))
13.95

Notez que l'utilisation directe de round(a, 2) entraînera toujours des problèmes de précision en virgule flottante, mais le formatage la valeur sous forme de chaîne avec %.2f ou {:.2f} produira la représentation à deux décimales souhaité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!

Déclaration:
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