falsches Runden?

17/08/2009 - 19:29 von Marten Lehmann | Report spam
Hallo,

ich habe gerade festgestellt, dass printf bzw. sprintf irgendwie falsch
rundet.

Bei printf("%.2f", 0.0150) müßte eigentlich 0.02 herauskommen.
Schließlich entspricht das 0.015 + 0.5 und dann ab der zweiten
Nachkommastelle abschneiden.

Leider kommt erst bei 0.0151 wirklich 0.02 heraus. Was làuft da falsch?
Womit kann man sonst nach auf eine bestimmte Anzahl Nachkommostellen runden?

Tschüß
Marten
 

Lesen sie die antworten

#1 Marten Lehmann
17/08/2009 - 19:48 | Warnen spam
Hallo,

hier mal direkt zum Ausprobieren, ergibt bei allen Perl-Versionen der
letzten Jahre den gleichen Fehler:

perl -e 'print sprintf("%.0f", 1.5). ""'

Sollte 2 ergeben, ergibt auch 2.

perl -e 'print sprintf("%.1f", 0.15). ""'

Sollte 0.2 ergeben, ergibt aber leider 0.1.

Erstaunlichweise passiert in Python mit

print("%.0f" % 1.5)
print("%.1f" % 0.15)

dasselbe. Aber wieso? 0.15 müsste doch per Definition bei einre
Nachkommastelle auf 0.2 aufgerundet werden, jedenfalls habe ich es so
früher im Matheunterricht gelernt.

Tschüß
Marten

Ähnliche fragen