Thread Perl Bug bei int? (44 answers)
Opened by Rolf_PlusW at 2013-03-01 11:29

GwenDragon
 2013-03-02 14:43
#166147 #166147
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
C:\>perl -e"print 19.946*100"
1994.6

Soweit noch ok.

C:\>perl -e"printf ('%.0f', 19.946*100) + 0;"
1995

Oh. Aufgerundet!

Na? Das ist eben kein Int-Ersatz. Integer soll abschneiden, nicht runden.

printf ist eben KEIN Ersatz, sondern klappt nur unter bestimmten Umständen.

//EDIT2:
C:\>perl -MPOSIX -e"print floor(19.946*100);"
1994

Yippie! Aber logisch, denn floor soll das so machen. ;)
Funktioniert soaber eben nur bei positiven Zahlen.
Ist eben auch kein Int-Ersatz.


Manche Funktionen lassen sich missbrauchen, aber nur wenn diejeniogen wissen wies intern geht.
Nachfolgende Programmierende nach dir werden Schreikrämpfe kriegen, wenn sie die Fallen nicht in-und-auswendig kennen.
Ich will keien Programme sehen, in denen so ein "Int" meist funktioniert. Irgwendwann kommt der böse Tag des Fails.
Last edited: 2013-03-02 14:57:48 +0100 (CET)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread Perl Bug bei int?