Convert floating-point-Zahl auf eine bestimmte Genauigkeit, und kopieren Sie dann auf Zeichenfolge
Habe ich eine Gleitkomma-Zahl, sagen 135.12345678910
. Ich verketten möchten, dass der Wert ein string ist, sondern nur 135.123456789
. Mit drucken, kann ich dies ganz einfach indem Sie etwas wie:
print "%.9f" % numvar
mit numvar
meine ursprüngliche Zahl. Gibt es eine einfache Möglichkeit, dies zu tun?
- % macht genau das - % ist nicht Teil der print-Funktion, sondern der string - siehe Python-docs
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit Python < 3 (z.B. 2.6 [siehe Kommentare] oder 2,7), es gibt zwei Möglichkeiten, dies zu tun.
Aber beachten Sie, dass für die Python-Versionen über 3 (z.B. 3.2 oder 3.3), option zwei ist bevorzugt.
Weitere Informationen zur option zwei, ich schlage vor,dieser link auf die string-Formatierung aus der Python-Dokumentation.
Sowie weitere Informationen zu option eins, dieser link genügen, und hat Informationen über die verschiedenen Flaggen.
Python 3.6 (amtlich veröffentlicht im Dezember 2016), fügte der
f
string-literal, weitere Informationen finden Sie hier, die sich diestr.format
Methode (Verwendung von geschweiften Klammern, so dassf"{numvar:.9f}"
löst das ursprüngliche problem), das ist,löst das problem. Check out @Oder-Duan-Antwort für weitere Informationen, aber diese Methode ist schnell.
newer_method_string = "{:.9f}".format(numvar)
- beachten Sie die erforderlichen:
zu trennen, das Feld und die Formatierung. Ich habe getestet, auf 2.7.5 sowieso.newer_method_string = "{0:.9f}".format(numvar)
-- beachten Sie die erforderlichen 0 für die field_name für diese ältere version.Python 3.6 | 2017
Damit das klar ist, können Sie f-string Formatierung. Dieser hat fast die gleiche syntax wie die
format
Methode, aber machen Sie es ein bisschen schöner.Beispiel:
Mehr Lesen über die neue f-saite:
Mit
round
:Es ist nicht print, nicht die Formatierung, Es ist eine Eigenschaft der Saiten, so können Sie einfach
Im Falle der Präzision erst zur Laufzeit bekannt ist, diese andere Formatierung option ist nützlich:
.format
-Methode beachten Sie, dass dies kann auch durchgeführt werden durch verschachteln Argumente etwa so:'{:.{n}f}'.format(numvar,n=n)
.Festlegen Präzision mit 9 Ziffern bekommen:
Rückkehr Präzision mit 2 Ziffern:
Rückkehr Präzision mit 2 Ziffern und der float-Wert umgewandelt:
Den
str
Funktion hat einen bug. Bitte versuchen Sie die folgenden. Sehen Sie '0,196553' aber der richtige Ausgang ist '0,196554'. Da diestr
Funktion ist default-Wert ist ROUND_HALF_UP..
vs.,
? Und wie ist es relevant für pauliwago Frage?