Drucken float auf n Dezimalstellen einschließlich der abschließenden Nullen
Ich brauche, um zu drucken oder konvertieren Sie eine float-Zahl auf 15 Dezimalstellen-string, auch wenn das Ergebnis hat viele nachfolgende 0s zB:
1.6 wird 1.6000000000000000
Versuchte ich Runde(6.2,15), aber es gibt 6.2000000000000002 hinzufügen von einem Rundungsfehler
Sah ich auch verschiedene Leute online, der die float in einen string und dann Hinzugefügt trailing-0 manuell aber das scheint verrückt...
Was ist der beste Weg, dies zu tun?
InformationsquelleAutor der Frage jonathan topf | 2011-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Python-Versionen 2.6+ und 3.x
Können Sie die
str.format
Methode. Beispiele:Hinweis: die
1
am Ende das erste Beispiel ist ein Rundungsfehler; es geschieht, weil die genaue Darstellung der Dezimalzahl 1.6 erfordert eine unendliche Anzahl von binären Ziffern. Da die floating-point-zahlen haben eine endliche Anzahl von bits, die die Zahl gerundet auf eine in der Nähe, aber nicht gleich, Wert.Für die Python-Versionen vor 2.6 (mindestens zurück bis 2,0)
Können Sie mit der "modulo-Formatierung" syntax (dies funktioniert für Python 2.6 und 2.7):
InformationsquelleAutor der Antwort David Alber
Floating-point-zahlen, die mangelnde Präzision zu exakt darstellen, "1.6" heraus, dass viele Dezimalstellen. Die Rundungsfehler sind real. Ihre Anzahl ist eigentlich nicht 1.6.
Check out: http://docs.python.org/library/decimal.html
InformationsquelleAutor der Antwort dkamins
Ich denke, das ist im wesentlichen, dass es in einen string, aber dies vermeidet Rundungsfehler:
InformationsquelleAutor der Antwort BenH