Ich möchte anzeigen:
49
wie 49.00
und:
54.9
wie 54.90
Unabhängig von der Länge der Dezimalstelle oder ob es Dezimalstellen gibt, möchte ich eine Decimal
mit 2 Dezimalstellen anzeigen , und ich möchte dies auf effiziente Weise tun. Der Zweck ist die Anzeige von Geldwerten.
z.B, 4898489.00
python
string-formatting
Orokusaki
quelle
quelle
Antworten:
Ich nehme an, Sie verwenden wahrscheinlich die
Decimal()
Objekte aus demdecimal
Modul? (Wenn Sie genau zwei Stellen mit einer Genauigkeit hinter dem Dezimalpunkt mit beliebig großen Zahlen benötigen, sollten Sie dies auf jeden Fall tun, und der Titel Ihrer Frage legt dies nahe ...)In diesem Fall enthält der Abschnitt " Dezimal-FAQ " der Dokumente ein Frage / Antwort-Paar, das für Sie hilfreich sein kann:
Die nächste Frage lautet
Wenn Sie die Antwort darauf benötigen (zusammen mit vielen anderen nützlichen Informationen), lesen Sie den oben genannten Abschnitt der Dokumente . Wenn Sie Ihr
Decimal
s mit zwei Stellen Genauigkeit über dem Dezimalpunkt halten (dh so viel Genauigkeit, wie erforderlich ist, um alle Stellen links vom Dezimalpunkt und zwei Stellen rechts davon und nicht mehr ...) zu halten, Wenn Sie sie dann in Strings mit konvertieren,str
funktioniert dies einwandfrei:quelle
Sie sollten die neuen Formatspezifikationen verwenden , um zu definieren, wie Ihr Wert dargestellt werden soll:
Die Dokumentation kann manchmal etwas stumpf sein, daher empfehle ich die folgenden, leichter lesbaren Referenzen:
.format()
Formatierung neuer Zeichenfolgen%
String Formatierung mit der neuen Stil.format()
String FormatierungIn Python 3.6 wurde die Literal-String-Interpolation (auch als F-Strings bezeichnet) eingeführt, sodass Sie die oben genannten Punkte noch prägnanter schreiben können als:
quelle
format
gibt a zurückstr
, nicht afloat
: gibtprint type({0:.2f}".format(pi))
zurück<type 'str'>
.return
. Bitte ändern Sie das mental inprint
s."{:.2f}".format(pi)
0:
? Ich nehme an, das.
ist Teil der Python-ZeichenfolgeDer Abschnitt String-Formatierungsvorgänge in der Python-Dokumentation enthält die Antwort, nach der Sie suchen. Zusamenfassend:
Einige Beispiele:
quelle
0
nach dem%
, und keine Notwendigkeit, Wrapnum
in eintuple
.r = 1; "%s" % r; r = (1, 2); "%s" % r
versusr = 1; "%s" % (r,); r = (1,2 ); "%s" % (r,)
. Daher verwenden die meisten ausgefeilten Codierungsstile in Python jetzt das bedingungslose Tupel (und Python 3 hat die gesamte Methode der Zeichenfolgenformatierung als fehleranfällig abgelehnt).Sie können den Zeichenfolgenformatierungsoperator folgendermaßen verwenden :
Ich bin mir nicht sicher, was Sie unter "effizient" verstehen - dies ist mit ziemlicher Sicherheit nicht der Engpass Ihrer Anwendung. Wenn Ihr Programm langsam läuft, profilieren Sie es zuerst, um die Hotspots zu finden, und optimieren Sie diese dann.
quelle
Sie können
2
in2f
eine beliebige Anzahl von Dezimalstellen wechseln , die Sie anzeigen möchten.BEARBEITEN:
Aus bedeutet
Python3.6
dies:quelle
.format ist eine besser lesbare Methode zur Handhabung der Variablenformatierung:
quelle
In Python 3 wäre dies eine Möglichkeit
quelle
Wenn Sie mehrere Parameter haben, können Sie verwenden
quelle
Wenn Sie dies für die Währung verwenden und möchten, dass der Wert durch
,
's getrennt wird, können Sie ihn verwenden$ {:,.f2}.format(currency_value)
.z.B:
currency_value = 1234.50
$ {:,.f2}.format(currency_value)
-->
$ 1,234.50
Hier ist ein bisschen Code, den ich vor einiger Zeit geschrieben habe:
print("> At the end of year " + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
quelle
Das einfachste Beispiel, um Ihnen zu zeigen, wie das geht, ist:
Code:
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
`Ausgabe: Richtige Antworten: 88,64%
quelle
wie wäre es mit
quelle