Hab mir euer gepostetes angeschaut, und versuche mir mal selber eine Erklärung zu geben wie es anscheind ist.
Also Fließkommazahlen haben ja indem Sinne eine unendlich Tiefe. Wenn man 0.2 Schreibt dann könnte man dort praktischerweise noch unendlich Nullen anhängen.
Aber genau das lässt sich ja mit einem Computer nicht vernünftig erledigen. Daher versucht Perl diese Zahl so genau wie Möglich darzustellen und rundet es dann irgendwann ab einer stelle ab. So bekommen wir also durch 0.2 die Zahl "0.20000000000000001110"
Mit diesen Möglichst genauen Zahlen, aber natürlich nicht 100%ig korrekten Zahlen wird nun gerechnet. Das Ergebnis ist 11.99999999999... Und wird deswegen zu 11 gerundet.
Die Ursache ist also deswegen weil wir nur begrenzte bits haben um die Zahl zu Speichern.
Soweit korrekt?
Dann zu der anderen Frage. warum stellt er wenn ich "0.2" schreibe es intern zu "0.20000000000000001110.." dar? Also warum meint er es auf/abrunden zu müssen, obwohl ich nirgendswo hinter 0.2 noch etwas geschrieben habe? Irgendwie unlogisch. :0\n\n
<!--EDIT|sid burn|1181555900-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de