8
votes

Comment utiliser le formatage de la chaîne Python pour convertir un entier représentant des cents à un flotteur représentant des dollars?

J'ai un entier représentant un prix en cents. Utilisation des chaînes de format Python, comment puis-je convertir cette valeur en dollars avec deux décimales? Exemples:

1234 => 12.34
5 => 0.05
999 => 9.99


1 commentaires

N'utilisez pas de flotteur pour la monnaie. C'est complètement faux. Décimal fonctionne parfaitement pour vos besoins. Il peut être converti en chaîne (pour JavaScript) et tous les calculs financiers fonctionnent correctement avec décimale.


3 Réponses :


5
votes

en utilisant str.cformat : xxx

rendements xxx

in python2.6 Utilisation '{0: .2f}' au lieu de '{:. 2f}' < / code>.


0 commentaires

6
votes

Si vous ne vous souciez pas de la localisation, divisez simplement par 100 et formatez-le:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "") # use the user-default locale
'en_US.UTF-8'
>>> for cents in [ 1234, 5, 999 ]:
...     locale.currency(float(cents) / 100.0)
...
'$12.34'
'$0.05'
'$9.99'


1 commentaires

Je ne suis pas sûr que travailler avec floatts et la devise est une bonne idée.



15
votes

Vous devriez essayer de ne jamais utiliser des flotteurs pour représenter de l'argent (une inexactitude numérique peut trop facilement se glisser dans). Le module décimal fournit un type de données utile pour représenter de l'argent car il peut exactement représenter des nombres décimaux tels que 0,05.

Il peut être utilisé comme celui-ci: P>

import decimal
cents = 999
dollars = decimal.Decimal(cents) / 100
print dollars


1 commentaires

Cela ne fonctionne pas pour différents nombres tels que 0 cents (retour 0), 10 cents (retour 0,1), etc.