Thread Perl Bug bei int?
(44 answers)
Opened by Rolf_PlusW at 2013-03-01 11:29
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) |