Seite 1 von 1

merkwürdige Ausgabe von Listen

Verfasst: Freitag 2. November 2007, 14:43
von acidk
Hallo Leute!
Ich bin gerade bezüglich der Ausgabe von einer Liste etwas verwirrt:

Code: Alles auswählen

a= [[-0.068, 2.650, 53.140, 12.990], [-0.392, -4.350, 52.140, 11.990], [-0.678, 0.650, 54.140, 9.990]]
print a liefert jedoch:

Code: Alles auswählen

[[-0.068000000000000005, 2.6499999999999999, 53.140000000000001, 12.99], [-0.39200000000000002, -4.3499999999999996, 52.140000000000001, 11.99], [-0.67800000000000005, 0.65000000000000002, 54.140000000000001, 9.9900000000000002]]
Wie bekomme ich die Formatierung/ Rundung (oder was auch immer) in den Griff?

Besten Dank!

Verfasst: Freitag 2. November 2007, 14:47
von lutz.horn
Schau Dir mal [wiki]Tutorial/Zahlen[/wiki] an, das sollte einige Fragen beantworten.

Verfasst: Freitag 2. November 2007, 17:41
von acidk
okay - scheinbar mit round??? , nur: wie krieg ich s auf die Liste angewand -
mit einer for - i schleife geht s nicht.

Gibt es keine "einfache" Lösung über numpy o.ä.?

Verfasst: Freitag 2. November 2007, 17:53
von CM
Hoi,

Fließkommazahlen können nicht immer exakt wiedergegeben werden. Das liegt auch nicht an Python. round() gibt selber wieder eine Fließkommazahl zurück. Wenn Du nicht an Präzission verlieren willst, kannst Du Deine Zahlen so nicht besser darstellen. round(-0.068, 3) wird nichts daran ändern, daß -0.068000000000000005 herauskommt. (Das ist sogar ein schönes Beispiel: Runden auf 2 oder eine Nachkommastelle bringt keine Verbesserung der Situation ;-) .)

Du mußt Dir also die Frage stellen: Was stellen meine Zahlen dar? Wie genau müssen sie sein?

Ggf. hilft das decimal-Modul. Aber ließ Dir vielleicht doch erst noch mal meinen Link durch. numpy jedenfalls ändert nichts an der Genauigkeit mit der Fließkommazahlen behandelt werden.

Wenn Du wissen willst, wie man ggf. die Ausgabe scheinbar genauer macht bzw. aufhübscht:
http://docs.python.org/tut/node9.html#S ... 0000000000

Gruß,
Christian