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
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')
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
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!