Python 3 Anzahl der Nachkommastellen erhöhen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Über eine Kombination aus round und String Formatter.

Beispiel:

number = 1
print("{:.6f}".format(round(number, 6))) # 1.000000

number = 1.123456789
print("{:.6f}".format(round(number, 6))) # 1.123457

Hierbei werden stets sechs Nachkommastellen ausgegeben.

ilovepcs 
Fragesteller
 30.11.2019, 18:37

Danke für deine Antwort.

Dabei bekomme ich diese Fehlermeldung.

TypeError: type numpy.ndarray doesn't define __round__ method

Muss ich dafür noch etwas importieren? Meines Wissens nach nämlich nicht, oder liege ich da falsch?

0
regex9  30.11.2019, 19:01
@ilovepcs

Du hast ein Array in die round-Funktion hineingegeben und das wird nicht unterstützt. Versuche es mal mit numpy.round. Für die Formatierung kannst du erst das Format (global) via set_printoptions festlegen:

numpy.set_printoptions(formatter={'float': lambda x: "{0:0.6f}".format(x)})
print(yourResult)

Da ich derzeit keine Testumgebung zur Verfügung habe, ist das Snippet ungetestet.

0

round(zahl, nachkommastellen)

So müsstest du einen wert auf eine bestimmte Anzahl Nachkommastellen runden können.

print(round(model.predict([7]), nachkommastellen))

Wäre mein Vorschlag. Musst natürlich "nachkommastellen" durch einen int Wert ersetzen.

Probier es mal aus, habs zwar noch nie gemacgt aber vielleicht hängt es dir ja die zusätzlichen nullen dran weil du ja erhöhst.

Edit: Wie du mehr Werte aus dem Befehl bekommst weiß ich allerdings nicht.

ilovepcs 
Fragesteller
 30.11.2019, 18:41

Vielen Dank, für deine Antwort, jedoch bekomme ich eine Fehlermeldung.

---> 13 print(round(model.predict([7]), 10))

TypeError: type numpy.ndarray doesn't define __round__ method

0
ErnieHartler  01.12.2019, 00:18
@ilovepcs

Also gibt der Befehl ein Numpy Array zurück? Mit einem Array geht round natürlich nicht. Deine Frage ließ annehmen, dass der Rückgabewert ein Float ist.

1