[Python-de] Wer nicht fragt, bleibt dumm

Georg Mischler schorsch at schorsch.com
Mon Nov 24 20:00:47 CET 2003


Axel Bringenberg wrote:

> Sind Python 1.5.2 und älter nicht IEEE-754 konform?

Hast du die empfohlenen Referenzen gelesen?

Intern ist jede Version von Python exakt so "IEEE-754 konform"
wie die zugrundeliegende C-Bibliothek. Daran ist mit vernuenftigem
Aufwand auch nichts zu aendern.


> Das war mir irgendwie nie so bewußt. War das der Grund für die Änderung?
>
> Hat jemand ein Beispiel für mich, das bei 1.5.2 und älter "falsche"
> Ergebnisse liefert?

Das Beispiel hast du schon selber geliefert.

Die Aenderung bezieht sich *ausschliesslich* darauf, wie bei der
Umwandlung von float zu string durch die Funktion repr() die
Formatierung vorgenommen wird. Da diese Funktion auch bei der
interaktiven Ausgabe zum Zuge kommt, faellt der Unterschied dort
manchmal auch ansonsten unaufmerksamen Programmierern auf.


> Ich kann mir nicht vorstellen, dass diese Aenderung ohne vorangegangene
> Diskussion vorgenommen worden ist. Aber wenn man danach google't,
> bekommt man leider nur tonnen von Erklaerungen und Beispielen bzgl.
> Floating-Point _ab_ 2.0.

Da musst du wahrscheinlich in den Archiven von python-dev suchen.
Eine so triviale Aenderung wird kaum im grossen Kreis diskutiert.


> Auch finde ich Detlefs Bemerkung "die Anwender mit der Nase auf die
> bekannten Floating-Point-Probleme zu stoßen" zwar passend, aber für mich
> klingt das nach "fishing for faqs" ;-) Gab es denn vorher keine
> Diskussion über die zu erwartende Verwirrrung?

Die exakt identischen Fragen und Antworten gibt es als FAQ zu
jeder anderen Programmiersprache auch. Wenn du als Entwickler mit
gebrochenen Zahlen hantierst, dann musst du die grundsaetzlichen
Einschraenkungen der binaeren Repraesentation kennen, sonst wirst
du irgendwann mit unangenehmen Ueberraschungen konfrontiert.

Die Aenderung sollte wohl mithelfen, dass die entsprechenden
Fragen moeglichst frueh auftauchen, und nicht erst nachdem dein
Programm schon zwei Jahre "mission-critical" im Einsatz war.
Ein weiterer Grund, warum Python eine gute Sprache ist, um damit
programmieren zu lernen...


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/