Ganz einfach: er rundet. Das geiche kriegt man glaub ich bei allen Sprachen (bei PASCAL bekamm ich das gleiche) Die Sache ist so: Perl gibt viel weniger Nachkommastellen, als er im Speicher noch hat. Wenn mann sagt:
$wert = 1.4142135623731 \* 1.4142135623731;
print $wert;
dann bekommt man höchst wahrscheinlich so was
2.0000623994298
Aber web man zwei Variablen multipliziert, dann werden zwei Zahlen mit viel mehr Nachkommastellen multipliziert. Als Ergebnis kommt vielleicht
2.0000000000001241…
Da Perl aber nur z.B. zehn Nachkommastellen ausgibt, dann müsste er praktisch
2.0000000000
ausgeben, was aber ziemlich blöd aussehen würde.
Ein anderer Fall:
Es kann ja auch sein, dass infolge der Multiplikation folgender WErt herauskommt
1,9999999999999999…
Und jetzt hat man das gleiche Spiel. Perl zeigt z.B. nur 10 Nachkommastellen an, also muss er grad die elfte Stelle runden. Da allerdings an der zehnten Stelle grad auch ne 9 steht, muss er wieder runden. So geht das Spielchen weiter bis es 2 heißt.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]