Je souhaite afficher:
49
comme 49.00
et:
54.9
comme 54.90
Quelle que soit la longueur de la décimale ou s'il y a des décimales, je voudrais afficher un Decimal
avec 2 décimales et je voudrais le faire de manière efficace. Le but est d'afficher les valeurs monétaires.
par exemple, 4898489.00
python
string-formatting
orokusaki
la source
la source
Réponses:
Je suppose que vous utilisez probablement les
Decimal()
objets dudecimal
module? (Si vous avez besoin d'exactement deux chiffres de précision au-delà de la virgule décimale avec des nombres arbitrairement grands, vous devriez certainement l'être, et c'est ce que suggère le titre de votre question ...)Si tel est le cas, la section FAQ décimale de la documentation contient une paire question / réponse qui peut vous être utile:
La question suivante se lit
Si vous avez besoin de la réponse à cela (ainsi que de nombreuses autres informations utiles), consultez la section susmentionnée de la documentation . De plus, si vous conservez votre
Decimal
s avec deux chiffres de précision au-delà du point décimal (ce qui signifie autant de précision qu'il est nécessaire pour garder tous les chiffres à gauche du point décimal et deux à droite et pas plus ...), puis les convertir en chaînes avecstr
fonctionnera bien:la source
Vous devez utiliser les nouvelles spécifications de format pour définir comment votre valeur doit être représentée:
La documentation peut parfois être un peu obtuse, donc je recommande les références suivantes, plus faciles à lire:
.format()
mise en forme de chaînes de style nouveau%
chaîne mise en forme avec le nouveau style de.format()
mise en forme de chaînePython 3.6 a introduit l'interpolation littérale de chaînes (également connue sous le nom de f-strings), vous pouvez donc maintenant écrire ce qui précède encore plus succinct:
la source
format
retourne unstr
, pas unfloat
:print type({0:.2f}".format(pi))
retourne<type 'str'>
.return
. Veuillez modifier mentalement cela par l'print
art."{:.2f}".format(pi)
0:
il? Je suppose que cela.
fait partie de la chaîne pythonLa section Opérations de formatage de chaînes de la documentation Python contient la réponse que vous recherchez. En bref:
Quelques exemples:
la source
0
après%
, et pas besoin d'enveloppernum
dans untuple
.r = 1; "%s" % r; r = (1, 2); "%s" % r
versusr = 1; "%s" % (r,); r = (1,2 ); "%s" % (r,)
. En tant que tel, la plupart des styles de codage sophistiqués en python utilisent maintenant le tuple inconditionnel (et Python 3 a déconseillé toute la méthode de formatage des chaînes comme sujette aux erreurs).Vous pouvez utiliser l' opérateur de formatage de chaîne comme suit:
Je ne sais pas ce que vous entendez par "efficace" - ce n'est certainement pas le goulot d'étranglement de votre application. Si votre programme s'exécute lentement, profilez-le d'abord pour trouver les points chauds, puis optimisez-les.
la source
Vous pouvez modifier
2
en2f
un nombre quelconque de points de décimales que vous souhaitez afficher.ÉDITER:
De
Python3.6
, cela se traduit par:la source
.format est un moyen plus lisible de gérer le formatage des variables:
la source
En python 3, une façon de faire serait
la source
si vous avez plusieurs paramètres, vous pouvez utiliser
la source
Si vous l'utilisez pour de la monnaie et souhaitez également que la valeur soit séparée par celle que
,
vous pouvez utiliser$ {:,.f2}.format(currency_value)
.par exemple:
currency_value = 1234.50
$ {:,.f2}.format(currency_value)
-->
$ 1,234.50
Voici un peu de code que j'ai écrit il y a quelque temps:
print("> At the end of year " + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
la source
L'exemple le plus simple pour vous montrer comment procéder est:
Code:
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
"Sortie: bonnes réponses: 88,64%
la source
qu'en est-il de
la source