Hi, nach einiger Zeit des Mitlesens heute auch mal mein erstes Statement.
Was tun? Nicht in Euro-Komma-irgendwas rechnen sondern in Cent Komma Null. Bzw. bei der Tankstelle in 1/10 Cent und bei der Bank mit 1/100 oder 1/1000 Komma-Null rechnen und erst zum Schluss zurück rechnen. Aber so bald eine Kommerzahlen dabei ist, kann das Ergebnis abweichen.
Dieser Weg hat weiterhin seine Schwäche, denn er rundet nicht richtig und verlagert die Problematik auch nur weiter nach hinten. Bei einer entsprechenden Anzahl finanzieller Transaktionen kann dies dennoch einträglich genug sein. Storries über die Ausnutzung dieses Problems gibt es hinreichend. *g* Die genaue Problematik hat Mike Cowlishaw, seines Zeichens IBM Fellow und Entwickler von ReXX sehr schön unter http://www2.hursley.ibm.com/decimal/decifaq.html erläutert. Typischerweise nutzt man zur Lösung binär codierte Dezimalzahlen, kurz BCD. Java unterstützt dies z.B. durch die Klasse BigDecimal. Diese Konstrukte sind natürlich nicht so schnell wie Floating Points via CPU, aber halt präzise. Für Python gibt es, eine Google-Recherche sei Dank, auch eine Lösung unter http://fixedpoint.sourceforge.net/ Diese Bibliothek ermöglicht Python eine präzise Festkomma-Arithmetik. Allerdings habe ich sie selbst noch nicht auspobiert. mue -- ** ** Frank Mueller / Oldenburg / Germany ** ** frank@mweb.de http://www.mweb.de ** _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (1)
-
Frank Mueller