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

bianca
 2013-04-27 20:33
#167320 #167320
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
2013-04-27T18:21:55 tonewheel
Ich nehme nun an, dass diese 'Summen', die Du erwähnst, Integerzahlen sein sollen?!

Ja.

2013-04-27T18:21:55 tonewheel
Antwort für Integer: Hast Du mal die modifizierte Zeile 8 ausprobiert? Liefert die nicht genau das, was Du willst? Sie ist ausreichend, um den 'Rundungsfehler' von Perl zu verhindern.

Aus den anderen drei erwähnten Threads ist bei mir hängen geblieben, dass man beim Rechnen Abstand von sprintf nehmen sollte.

Edit: hier wurde das gesagt und begründet: msg #166121

2013-04-27T18:21:55 tonewheel
Antwort für Float: Da Float Werte nie 'gleich' sind (das liegt nicht an Perl, oder am Computer, sondern einfach nur daran, dass man mit endlich vielen Binärstellen keine reelle Zahl darstellen kann), legt man fest, wann etwas 'als gleich gelten soll'. Dann tut man, ähnlich der Mathematik; man legt ein epsilon fest, das die Abweichung anzeigt, die noch als gleich gilt:

Ja, kann ich nachvollziehen. Würde auch das aktuelle Problem lösen.
Aber eine wichtige Frage bleibt bei mir offen: Wieso enthält eine Variable offensichtlich intern einen anderen Wert als der, den man mit print anzeigen lassen kann? Das gibt mir das Gefühl, keine Kontrolle über die Werte zu haben und damit nie sicher zu sein, dass meine Summe am Ende stimmt.
Das birgt ja das mit der Anzahl der Einzelwerte zunehmende Risiko, dass sich hier nicht sichtbar zu machende Differenzen ergeben, die sich aufschaukeln.
Gibt es denn keine Möglichkeit sicherzustellen, dass eine Variable das enthält, was man auch "sehen" kann?
Last edited: 2013-04-27 20:43:27 +0200 (CEST)
10 print "Hallo"
20 goto 10

View full thread Rechenfehler mit Perl ausgleichen