Thread Rechenfehler mit Perl ausgleichen
(71 answers)
Opened by bianca at 2013-04-27 13:42 2013-04-27T18:21:05 bianca Mach's doch mal Schritt für Schritt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 use strict; use warnings; my $f = 0.57; my $f100 = $f * 100; print ($f100 == 57 ? 'ja' : 'nein', "\n"); my $i100 = sprintf('%.0f', $f * 100); print ($i100 == 57 ? 'ja' : 'nein', "\n"); Ergibt Quote Mein Fazit: Nach dem Multiplizieren zu Integer sofort runden. Solange deine Zahlen nicht zu groß sind, sollte das klappen. Probiere mal, ob das für dich brauchbar ist. Edit: Ich habe jetzt das berühmte Beispiel von Muffi msg #166227 Quote nach dem gleichen Muster behandelt Code (perl): (dl
)
1 2 3 4 5 6 use strict; use warnings; my $f = 0.9999; my $f_faktor = 10000; my $f_int = sprintf('%.0f', $f * $f_faktor); print ((1*$f_faktor - $f_int) * 10000 == 1*$f_faktor ? 'ja' : 'nein', "\n"); Ergibt ja. Du siehst, man muss bei der Umsetzung verdammt aufpassen, dass alle Zahlen gleich skaliert sind, aber diese Lernphase hast du ja wohl schon hinter dir. Immerhin, auch dieses Beispiel rechnet jetzt korrekt. Last edited: 2013-04-29 18:26:52 +0200 (CEST) Gruß
GUIfreund |