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

GUIfreund
 2013-04-30 22:19
#167374 #167374
User since
2011-08-08
559 articles
BenutzerIn
[default_avatar]
2013-04-29T17:43:01 bianca
2013-04-29T14:32:35 GUIfreund
Mein Fazit: Nach dem Multiplizieren zu Integer sofort runden.

Jetzt wird es aber ganz haarsträubend :)
Das integer'n sollte ja Rechenfehler verhindern. Und rein gedanklich sollte doch ein ganzzahliger Wert nicht mehr gerundet werden müssen, oder?

Mir scheint, du hast meine Beispiele falsch verstanden. Ich wollte eine Möglichkeit zeigen, mit Perl reine Integerarithmetik zu betreiben, ohne Zusatzmodule zu verwenden. Da dein Beispiel, bei dem das integer'n versagt hat, eine Gleitkommakonstante enthielt, habe ich zunächst diese mit einer Zehnerpotenz multipliziert, um das Komma hinter die letzte angegebene Stelle zu schieben. Das Ergebnis ist natürlich wieder eine Gleitkommazahl, also ungenau. Diese runde ich auf die nächste Integer, um diese Ungenauigkeit loszuwerden. Danach rechne ich nur noch mit Integern, und das Ergebnis ist richtig.

In der Praxis wird das Verfahren recht mühsam, wie ich an dem noch recht einfachen Beispiel von Muffi gezeigt habe. Für ernsthaftes Arbeiten würde ich mir ein Bündel kleiner Subroutinen für die einzelnen Rechenschritte schreiben. Wenn dann noch die Auflösung von Klammern hinzukäme, wäre dieses Bündel nicht gerade klein.

Die Alternative wäre der Einsatz eines Paketes für Integerarithmetik - oder die weitere Verfeinerung deiner Integer-Routine. Du hast dich entschieden. Wie ich schon früher schrieb, habe ich Respekt vor dem, was du auf diesem Wege bisher erreicht hast.
Gruß
GUIfreund

View full thread Rechenfehler mit Perl ausgleichen