@Boa: Du beziehst keine Ungenauigkeit mit ein, sondern fügst nur noch weitere hinzu. Unter Umständen werden die Berechnungen sogar fehlerhaft.
Hase hat geschrieben:Ich habe mir auch "Floating Point Arithmetic: Issues and Limitations" duchgelesen. Jetzt weiß ich zwar, warum es nicht immer klappt. Es steht aber leider nicht da, wie ich das Problem umschiffen kann.
Doch, das steht da. Es wird auf das decimal-Modul hingewiesen, mit dem du solche Probleme umgehen kannst.
Hase hat geschrieben:Das Ganze gehört zu einem ziemlich komplexen Programm und ich möchte vermeiden, größere Teile komplett neu zu schreiben. Ich suche also eine einfache, sichere und wirkungsvolle Lösung.
Du wirst nichts neu schreiben müssen, das Durchgehen deines gesamten Codes wird allerdings nötig sein. Wenn du die von dir gewünschten Garantien haben willst, dann musst du alle Vorkommnisse von ``float``s durch ``decimal.Decimal`` ersetzen. Sonst werden auch alle Zwischenschritte fehlerhaft berechnet. Ich hoffe, dass du gute und ausreichend viele Unit-Tests hast, sonst kann das ekelhaft werden
Das Leben ist wie ein Tennisball.