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

tonewheel
 2013-04-28 00:11
#167322 #167322
User since
2006-10-01
182 articles
BenutzerIn
[default_avatar]
2013-04-27T18:33:46 bianca
Aus den anderen drei erwähnten Threads ist bei mir hängen geblieben, dass man beim Rechnen Abstand von sprintf nehmen sollte.


Die Antwort gibst Du Dir selbst: '...beim Rechnen'. Klar, dass man dann den Fehler über die ganze Rechnung transportiert.

2013-04-27T18:33:46 bianca
Ja, kann ich nachvollziehen. Würde auch das aktuelle Problem lösen.


Daher schrieb ich ja, dass es auch von der Anwendung abhängt. Wenn Du aufgrund dessen 'Differenz ist Null' als gegeben sehen kannst, ist das Ziel auch ohne Integers erreicht.

Wenn man aber am Ende wirklich einen Wert und nicht nur eine Aussage anzeigen will, muss man sich überlegen, wie genau der dargestellt werden soll. Mit printf bzw. sprintf kompensiert man ledglich das, was Perl 'übergenau' nimmt, wo man es gar nicht so genau haben will. Jedoch, nicht um dann weiter zu rechnen.

2013-04-27T18:33:46 bianca
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

Aus gesagten Gründen. Intern liegen nur float (double) ab. Die sind nur bis auf die x-te Stelle genau. Mit printf bzw. sprintf (nicht print) legt man bei der 'Ausgabe' fest, wie genau die Zahl 'dargestellt' werden soll. Und was anderes könnte man mit einer Zahl machen, als die entweder auszugeben, oder mir ihr weiter zu rechnen.

2013-04-27T18:33:46 bianca
Werte zu haben und damit nie sicher zu sein, dass meine Summe am Ende stimmt.

Wenn man sich die Sachverhalte zu Herzen nimmt, dann schon.

2013-04-27T18:33:46 bianca
Das birgt ja das mit der Anzahl der Einzelwerte zunehmende Risiko, dass sich hier nicht sichtbar zu machende Differenzen ergeben, die sich aufschaukeln.

Das wäre nur genau dann der Fall, wenn man mit durch sprintf geformten Werten weiter rechnen würde.

2013-04-27T18:33:46 bianca
Gibt es denn keine Möglichkeit sicherzustellen, dass eine Variable das enthält, was man auch "sehen" kann?

In dem Fall wohl nicht. Dann müsstest Du schon zu den 'Nachbarn' wechseln, die da z.B. heissen: C, C++, Java. Nur da gibt es 'echte' Integers.

View full thread Rechenfehler mit Perl ausgleichen