Conserver les zéros de fin en python
Je suis en train d'écrire une classe pour représenter l'argent, et le seul problème que j'ai été en cours d'exécution en est que "1.50" != str(1.50)
. str(1.50) est égal à 1,5, et alll d'un coup, POUF. 45 cents ont disparu, et le montant est désormais de 1 dollar et de 5 cents. pas un seul dollar et 50 cents. De toute façon je ne pouvais empêcher str de faire ceci, ou suis-je en train de faire quelque chose de mal? C'est Python 2 BTW.
Ceci illustre un point important: un dollar et cinquante cents est pas équivalent à, disons, à 1,5 livres de poids. 1.5 livres et 1,50 livres sont exactement la même chose, et il est rare de soins à propos de la différence entre 1,5 livres et 1.50001 livres. C'est parce que les "livres" est la mesure d'un continue quantité (poids), alors que les "cents" est la mesure d'un discret quantité.
Mauvaise conception de classe frappe à nouveau...
Mauvaise conception de classe frappe à nouveau...
OriginalL'auteur Johm Don | 2013-03-06
Vous devez vous connecter pour publier un commentaire.
Lorsque l'on travaille avec de l'argent, toujours l'argent en utilisant la Virgule classe.
http://docs.python.org/2/library/decimal.html
OriginalL'auteur Wei Yen
Vous pouvez utiliser le
format
méthode sur des chaînes de spécifier le nombre de décimales que vous souhaitez représenter:Mais encore mieux serait d'utiliser le
décimal module
pour la représentation de l'argent, puisque les problèmes de représentation binaire, les flotteurs peuvent vous donner un peu hors résultats si vous êtes en train de faire de l'arithmétique. La documentation de ce module mentionne certaines de ces questions précisément, l'un des plus intéressantes pour les applications de l'argent est:"%.2f" % 1.5
OriginalL'auteur lvc
résultat
OriginalL'auteur eyquem