Thread Rechenfehler mit Perl ausgleichen
(71 answers)
Opened by bianca at 2013-04-27 13:42
Hi!
Habe hier gerade eine blöde Konstellation gehabt, bei der 100000 minus 100000 nicht 0 ergab. Habe im Code extra keine Fliesskommazahlen am Start. Musste ein wenig fummeln, bis ich das überhaupt nachstellen konnte. Mit folgendem Code kann ich das Problem reproduzieren: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/perl -w use strict; use warnings; my $a = integer(100000 + -1.45519152283669e-011 ); my $b = 100000; my $test = $a - $b; print "$a minus $b = $test\n"; sub integer { my $wert = shift (@_) || 0; return 'FEHLER' if $wert =~ /e\+?\d+$/; return 0 if $wert =~ /e-\d+$/; $wert = $1 if $wert =~ /^(.*?)\./; $wert = 0 if !$wert or $wert == -0; return $wert; } Quote 1. Kommt bei euch auch nicht 0 raus mit diesem Code? 2. Was kann ich tun, damit das Ergebnis 0 ergibt? Danke 10 print "Hallo"
20 goto 10 |