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
3 Réponses :
en utilisant str.cformat : rendements p> in python2.6 Utilisation '{0: .2f}' code> au lieu de
'{:. 2f}' < / code>. p> p>
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'
Je ne suis pas sûr que travailler avec floatts code> et la devise est une bonne idée.
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
Cela ne fonctionne pas pour différents nombres tels que 0 cents (retour 0), 10 cents (retour 0,1), etc.
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.