Thread Rechenfehler mit Perl ausgleichen (71 answers)
Opened by bianca at 2013-04-27 13:42

hlubenow
 2013-05-01 18:34
#167377 #167377
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
tonewheel
Das ist aber alles Sache des Rechners selbst, weder die Hostsprache C, noch Perl selbst kann das irgendwie kompensieren. Man kann auch nichts in den Interpreter einbauen, denn wie sollte das aussehen?

Ich stellte mir vor, daß man die Funktionalität von "Math::Decimal" in den Interpreter einbaut, zusammen mit Routinen, die erkennen, wenn im Code eine Situation eintritt, in der es gebraucht würde. Kann sein, daß das naiv war. Auch eine "Warnung" im Sinne von "use warnings;" könnte ich mir vorstellen:
Quote
Warning: Bits cutoff in decimal operation, at line ...

Das wäre doch nett. ;)
tonewheel
Im gegebenen Fall - d.h. wenn es um Währungen geht, wenn ich das richtig interpretiert habe - sollte man völlig auf Dezimalbrüche verzichten und die Beträge einfach in der Einheit Cent einfordern. D.h statt 1000,00 Euro wird 100000 Cent eingeben.

Das ist allerdings eine sehr gute Idee. Ich würde zwar nicht den Programmbenutzer um Eingabe von Cents bitten, aber in Python kommt aus dem Tk-Entry-Widget sowieso erstmal ein String (in Perl ein Skalar, logisch). Die Wandlung von "1000,00" zu "10000" kann man also durch Stringfunktionen/Regex machen und danach (intern) immer nur in Cent rechnen. Bei der Ausgabe fügt man das Komma dann wieder als String ein. Hätte ich eigentlich auch drauf kommen können. Manchmal sieht man den Wald wohl vor lauter Bäumen nicht. Danke für den Hinweis!

P.S.: Ich konnte innerhalb der Thread-Struktur nicht direkt auf den Beitrag antworten, vielleicht, weil das Maximum der Unterpunkte erreicht wurde?

View full thread Rechenfehler mit Perl ausgleichen