eine Hälfte, das heißt 0,5 in dezimale, hat eine genaue Binärdarstellung: 0,1Warum ist das Runden von 0,5 (Dezimal) nicht exakt?
Dennoch, wenn ich ihn um auf ganzzahlige, I 0 erhalten statt 1 habe ich versucht, in Python und C, die gleich verhalten. Z.B. der Python-Code:
>>> a,b,c = 0.49, 0.5, 0.51
>>> [round(x) for x in (a,b,c)]
[0, 0, 1]
>>> "%.0f %.0f %.0f" % (a,b,c)
'0 0 1'
Interessanterweise
>>> a,b,c = 0.049, 0.05, 0.051
>>> [round(x,1) for x in (a,b,c)]
[0.0, 0.1, 0.1]
>>> "%.1f %.1f %.1f" % (a,b,c)
'0.0 0.1 0.1'
Ich kenne zahlreiche ähnliche Fragen, zum Beispiel Python rounding error with float numbers, die Python tutorial on floating point arithmetics und die obligatorische What Every Computer Scientist Should Know About Floating-Point Arithmetic.
Wenn eine Zahl eine exakte binäre Darstellung wie (Dezimal) 0,5 hat, sollte sie nicht korrekt gerundet werden?
edit: Das Problem tritt in Version 3.4.3, aber nicht in der Version 2.7.6
ich nicht bekommen diese Ergebnisse - ich sehe, 0, 1, 1. Welche Version von Python werden Sie verwenden, und auf welcher Plattform? –
Beachten Sie, dass während "0.5" eine exakte binäre Darstellung "0.05" hat nicht –
Frage wurde bereits beantwortet: http://StackOverflow.com/Questions/10825926/python-3-x-rounding-behavior – HelloWorld