INT-Funktion
Eidgenosse
- perl
Hallo liebes Forum,
mein Versuch, eine einfache Rechenoperation durchzuführen scheitert leider an der int-Funktion unter Perl. Vielleicht hat jemand von Euch eine Erklärung für das Verhalten. Ich versuche folgendes:
$a='9,28';
print "$a\n"; # ergibt "9,28"
$a=~tr/,/./;
print "$a\n"; # ergibt "9.28"
$a=int($a*100);
print "$a\n"; # ergibt "927" <= ???
Vielen Dank im Voraus für Eure Hilfe!
Eidgenosse
Halihallo Eidgenosse
mein Versuch, eine einfache Rechenoperation durchzuführen scheitert leider an der int-Funktion unter Perl.
sogar
use POSIX qw(floor);
floor($a*100);
spielt verrückt, lauf "perldoc -f int" sind die POSIX-Funktionen zuverlässiger.
Vielleicht hat jemand von Euch eine Erklärung für das Verhalten.
Absolut nicht. Faszinierend!
$a='9,28';
bei $a='5,28' z.B. funktioniert es. Bei $a='90,28' auch. Nur der neuner und z.B. der
achter schlagen fehl.
Ich habe dafür keine Erklärung.
Ich arbeite mit ActiveState perl5.8, WinXP. Hatte dies jemand mit perl5.6 oder Unix
versucht? - Fehler in der POSIX-Emu von ActiveState?
Viele Grüsse
Philipp
Hallo Philipp,
vielen Dank für Deine Antwort. Ich glaube nun, dass es sich um ein Problem bei der Binärdarstellung der Zahl 9,28 handelt. Vermutlich wird sie durch etwas wie 9,27999999999999999 aproximiert.
Viele Grüße
Eidgenosse
hi,
vielen Dank für Deine Antwort. Ich glaube nun, dass es sich um ein Problem bei der Binärdarstellung der Zahl 9,28 handelt. Vermutlich wird sie durch etwas wie 9,27999999999999999 aproximiert.
also wenn ich die perldoc richtig verstanden habe ist das so:
For example, "int(-6.725/0.025)"
produces -268 rather than the correct -269; that's because it's
really more like -268.99999999999994315658 instead.
(perldoc -f int)
Viele Grüße, Rolf
Halihallo Eidgenosse
vielen Dank für Deine Antwort. Ich glaube nun, dass es sich um ein Problem bei der Binärdarstellung der Zahl 9,28 handelt. Vermutlich wird sie durch etwas wie 9,27999999999999999 aproximiert.
Wie dumm von mir, das 1x1 der Computer-Zahlentheorie :-(
*schäm*
Viele Grüsse
Philipp