merkwürdige Ausgabe von Listen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
acidk
User
Beiträge: 75
Registriert: Samstag 6. Januar 2007, 18:54
Wohnort: Braunschweig

Freitag 2. November 2007, 14:43

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!
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Freitag 2. November 2007, 14:47

Schau Dir mal [wiki]Tutorial/Zahlen[/wiki] an, das sollte einige Fragen beantworten.
acidk
User
Beiträge: 75
Registriert: Samstag 6. Januar 2007, 18:54
Wohnort: Braunschweig

Freitag 2. November 2007, 17:41

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.ä.?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Freitag 2. November 2007, 17:53

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
Antworten