Thread Richtig INTen (14 answers)
Opened by bianca at 2009-12-24 09:27

GUIfreund
 2012-01-17 19:12
#155516 #155516
User since
2011-08-08
559 Artikel
BenutzerIn
[default_avatar]
2012-01-17T13:32:13 bianca
Ja, wenn es so einfach wäre....
Code (perl): (dl )
print int(sprintf '%.15f', .57*100);

Quote
56

Passt nicht ganz.

Da hast du mich ja ganz schön ins Bockshorn gejagt. Dein Beispiel ist richtig. Und es kann auch gar nicht anders sein, denn
Code (perl): (dl )
perl -e "printf '%.15f', .57 * 100"
ergibt 56.999999999999993. Ich habe nie etwas anderes behauptet. Ich habe nur gesagt, dass meine sub mit_sprintf beim Testfall
Quote
.57 * 100,'=57',
das richtige Resultat liefert. Und das stimmt nach wie vor. Es kann auch gar nicht anders sein, denn in deinem Testskript (aus dem OP) wird an die sub $sub der exakte Wert 57 übergeben. Da kann int() nichts verderben.

Bleibt die Frage, wieso deine sub intperl in diesem Testfall 56 liefert. Die Antwort ist einfach: sie liefert das richtige 57.

Übrigens wird auch in den Testfällen
Quote
57.00000000000000001,'=57',
-1.999999999999999,'=-1',

der exakte Wert 57 bzw. 2 an die sub $sub übergeben. In letzterem Fall arbeitet nicht int falsch, sondern dein Erwartungswert ist falsch.

Bist du jetzt verwirrt? Ich auch. Als mögliche Erklärungen habe ich anzubieten: andere Hardware, anderes OS, andere Perl-Version.
Gruß
GUIfreund

View full thread Richtig INTen