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

GUIfreund
 2013-03-02 14:31
#166146 #166146
User since
2011-08-08
559 Artikel
BenutzerIn
[default_avatar]
2013-03-01T18:44:17 GwenDragon
(s)printf ist KEINE Integer- und auch keine Rundungsfunktion!
Es formatiert nur Zahlen nach einem bestimmten Ausgabeformat!

Die Formatierung einer Gleitkommazahl bedeutet Umwandlung in Dezimalschreibweise. Dabei ist eine Rundung meist unvermeidlich.
2013-03-01T18:44:17 GwenDragon
Nicht so sonderlich sinnvoll printf als Methode zur Erzwingung einer Ganzzahl anzupreisen. Schlecht für Anfänger, wenn die sowas falsch lernen.

Nicht nur die Ariane 5 stürzte wegen so einem Unsinn ab. Auch Patriots und anderes waren Opfer von falscher Berechnung.

Hast du ein Beispiel dafür, dass sprintf ein falsches Ergebnis liefert? Ok, das Ergebnis ist ein String, keine reine Zahl. In den Fällen, wo du eine reine Zahl benötigst, kannst du das erzwingen, z. B. mit
Code (perl): (dl )
$ganz = sprintf ('%.0f', $wert) + 0;

Ein Stück Kode, das stets ein richtiges Ergebnis liefert, kann IMHO kaum Quelle von falscher Berechnung sein. Es kann immer noch falsch angewendet werden, aber das ist eine andere Geschichte.
Gruß
GUIfreund

View full thread Perl Bug bei int?