2016-06-09 5 views
1

round(1.4 999 999 999 999 999) (ohne Leerzeichen) wird auf 2 gerundet aber round(1.4 99 999 999 999 999) (ohne Leerzeichen) auf 1Rounding in Python

abgerundet wird ich nehme an, dies mit ungenauen Gleitkommadarstellungen zu tun hat, aber nicht verstehen, wie kommt es, dass die erste Darstellung als näher an 2 als an 1 interpretiert wird.

+0

https://docs.python.org/2/tutorial/floatingpoint.html#tut- fp-issues –

Antwort

3

Da 1.4 999 999 999 999 999, wenn geparst ist genau 1,5, der Unterschied zwischen ihnen ist zu klein, um in dieser Größenordnung darzustellen.

Aber 1.4 99 999 999 999 999 ist niedrig genug, um „weniger als 1,5“ zu analysieren, eigentlich 1,4999999999999988897769753748434595763683319091796875, was deutlich weniger als 1,5

+0

Wenn dies ein allgemeines Problem ist, könnte ich vielleicht das Python-Bit aus der Frage entfernen. –

+0

Es ist ziemlich allgemein, außer dass die genaue Semantik der "Runden" -Operation von Sprache zu Sprache unterschiedlich ist: in Python ist "rund" korrekt gerundet; Das wird nicht unbedingt für alle Sprachen gelten. OTOH, dies hat mehr mit Gleitkommadarstellungsproblemen als der Rundungsoperation selbst zu tun. –