Ich habe weiter ein wenig rumgesucht und immerhin eine brauchbare Variante zum Finden der Systemeigenen Inf-Markierung gefunden.
my $overfloating_float = 0;
my $overfloating_float_string = '';
m< $i = 98;
while($i++) {
$overfloating_float = '1.2e+' . $i;
my $result = ($overfloating_float * 1) - $overfloating_float;
if($result ne '0') {
print "Overflow substraction result: $result, Overflow: " . ($overfloating_float * 1);
$overfloating_float_string = '9' x $i;
last;
}
last if($i > 1_000_000_000);
}
print “Overfloat at: “.($overfloating_float_string * 1)
Die Variable $overfloating_float_string ist eigentlich nicht korrekt erzeugt worden aber das ist hier gar nicht das Problem. Bei den meisten Testsystemen für Fukurama::Class ging alles gut, bis auf bei diesen dreien:
i686-linux-thread-multi-64int-ld2.6.21.5-smp
i686-linux-thread-multi-64int-ld2.6.21.5-smp
x86_64-linux-thread-multi-ld 2.6.22.10
Dort ergab sich ein die Fehlerhafte Ausgabe: Overfloat at: 9.99999999999999997e+4931 Ich weiß ja, dass es bei Fließkommaberechnungen Ungenauigkeiten gibt, aber die Art war mir neu.