Thread Perl Bug bei int? (44 answers)
Opened by Rolf_PlusW at 2013-03-01 11:29

GUIfreund
 2013-03-05 12:44
#166222 #166222
User since
2011-08-08
559 Artikel
BenutzerIn
[default_avatar]
2013-03-05T05:56:50 bianca
2013-03-04T18:16:03 GUIfreund
Dann habe ich die prints etwas geändert, um den Testwert in der möglichst vollen Genauigkeit zu sehen.

Und das tust du wiederum mit printf() von dem wir doch wissen, dass es in diesem Bereich nicht wie benötigt arbeitet.

Ich verwende printf() nicht zum Arbeiten - also zum Abschneiden, sondern zum Anzeigen des Eingabewertes bei der Gegenüberstellung der Ergebnisse verschiedener Verfahren zum Abschneiden. Und ich benutze dabei printf() nicht zum Runden des Eingabewertes, sondern im Gegenteil dazu, diesen in der Anzeige möglichst wenig zu runden. Du hingegen zeigst in den Prints einen deutlich gerundeten Eingabewert, was es schwer macht, Unterschiede in den Ergebnissen zu verstehen.

Zur Sache selbst:

Ich finde es bemerkenswert, dass deine int-Routine bei deinen Testdaten auch in Grenzfällen das korrekte Ergebnis liefert. Wirklich eine tolle Leistung.

Ich finde es bemerkenswert, dass ceil() nicht denselben Fehler wie int() hat. Da beide für negative Zahlen dasselbe Ergebnis haben sollen, nahm ich an, dass sie auch denselben Kode verwenden.

Mit Muffis Vorschlag könnte man das Ergebnis der neuen GUIfreund-sub noch etwas verbessern, sodass alle deine Testfälle das richtige Ergebnis liefern. Und durch Verkleinern von Epsilon könnte man die Trefferquote noch steigern. Aber 100% kann man nie erreichen. Mit Epsilon = e-15 ist man schon hart am Grundrauschen der Gleitkommaarithmetik.
Gruß
GUIfreund

View full thread Perl Bug bei int?