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

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

DDD
Libérer: 2024-12-19 03:17:23
original
448 Les gens l'ont consulté

How Can I Precisely Limit Floating-Point Numbers to Two Decimal Places in Python?

Limiter les flottants à deux décimales : imprécision des virgules flottantes et solutions alternatives

Rencontrer des écarts entre les valeurs à virgule flottante attendues et affichées est un problème. problème courant rencontré par les développeurs. En Python, le code fourni vise à arrondir la valeur de « a » à 13,95 mais produit un résultat légèrement différent en raison des limitations de la représentation à virgule flottante.

Les nombres à virgule flottante sont utilisés pour représenter des nombres réels dans un système informatique binaire. Cependant, tous les nombres ne peuvent pas être représentés avec une précision totale, ce qui entraîne des erreurs d’arrondi. Dans le cas de « a », la valeur arrondie est la même que la valeur d'origine car l'ordinateur la stocke sous forme de fraction binaire qui ne peut pas représenter exactement 13,95.

Le type à virgule flottante double précision de Python utilise 53 bits de précision, alors que les flotteurs ordinaires ont 24 bits. Cela signifie que la précision des nombres à virgule flottante est limitée à 16 chiffres décimaux pour la double précision et à 8 chiffres décimaux pour les flottants normaux.

Pour résoudre ce problème, plusieurs approches peuvent être envisagées :

Format d'affichage

Pour afficher « a » avec seulement deux décimales, utilisez des techniques de formatage de chaîne telles que as :

print("%.2f" % a)  # Output: 13.95
print("{:.2f}".format(a))  # Output: 13.95
Copier après la connexion

Type décimal

Si une précision exacte est requise, envisagez d'utiliser le type décimal du module décimal :

import decimal
decimal.Decimal('13.95')  # Output: Decimal('13.95')
Copier après la connexion

Représentation entière

Pour les valeurs monétaires où la précision n'est requise que jusqu'à deux décimales, utilisez des nombres entiers pour stocker les valeurs en cents et divisez par 100 pour les convertir en dollars :

value_in_cents = 1395  # Store value as an integer
value_in_dollars = value_in_cents / 100  # Output: 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal