Ich habe beispielsweise eine Gleitkommazahl 135.12345678910
. Ich möchte diesen Wert mit einer Zeichenfolge verknüpfen, möchte aber nur 135.123456789
. Mit print kann ich dies einfach tun, indem ich Folgendes mache:
print "%.9f" % numvar
mit numvar
meiner ursprünglichen Nummer zu sein. Gibt es eine einfache Möglichkeit, dies zu tun?
python
string
floating-point
pauliwago
quelle
quelle
Antworten:
Bei Python <3 (z. B. 2.6 [siehe Kommentare] oder 2.7) gibt es zwei Möglichkeiten.
Beachten Sie jedoch, dass für Python-Versionen über 3 (z. B. 3.2 oder 3.3) Option zwei bevorzugt wird .
Für weitere Informationen zu Option zwei empfehle ich diesen Link zur Formatierung von Zeichenfolgen aus der Python-Dokumentation .
Für weitere Informationen zu Option 1 reicht dieser Link aus und enthält Informationen zu den verschiedenen Flags .
Python 3.6 (offiziell im Dezember 2016 veröffentlicht) hat das
f
String-Literal hinzugefügt. Weitere Informationen finden Sie hier , wodurch diestr.format
Methode erweitert wird (Verwendung von geschweiften Klammern, umf"{numvar:.9f}"
das ursprüngliche Problem zu lösen).löst das Problem. Weitere Informationen finden Sie in der Antwort von @ Or-Duan. Diese Methode ist jedoch schnell .
quelle
newer_method_string = "{:.9f}".format(numvar)
- beachten Sie die erforderlichen:
, um das Feld und die Formatierung zu trennen. Ich habe das sowieso auf 2.7.5 getestet.newer_method_string = "{0:.9f}".format(numvar)
- notieren Sie die erforderliche 0 für den Feldnamen für diese ältere Version.Python 3.6
Um dies zu verdeutlichen, können Sie die F-String- Formatierung verwenden. Dies hat fast die gleiche Syntax wie die
format
Methode, macht es aber ein bisschen schöner.Beispiel:
Lesen Sie mehr über die neue f-Saite:
Hier ist ein Diagramm der Ausführungszeiten der verschiedenen getesteten Methoden (vom letzten Link oben):
quelle
Verwenden von
round
:quelle
Es ist kein Druck, der die Formatierung übernimmt. Es ist eine Eigenschaft von Zeichenfolgen, sodass Sie sie einfach verwenden können
quelle
Falls die Genauigkeit erst zur Laufzeit bekannt ist, ist diese andere Formatierungsoption hilfreich:
quelle
.format
, beachten Sie, dass dies auch durch Verschachteln von Argumenten wie folgt erfolgen kann :'{:.{n}f}'.format(numvar,n=n)
.Um die Genauigkeit mit 9 Stellen einzustellen, erhalten Sie:
Rückgabegenauigkeit mit 2 Ziffern:
Rückgabegenauigkeit mit 2 Ziffern und Float-konvertiertem Wert:
quelle
Die
str
Funktion hat einen Fehler. Bitte versuche folgendes. Sie sehen '0,196553', aber die richtige Ausgabe ist '0,196554'. Weil derstr
Standardwert der Funktion ROUND_HALF_UP ist.quelle
.
vs.,
Und wie ist es für Pauliwagos Frage relevant?