Problem whit float precision, 1.6 Windows 98
Remco Gerlich
scarblac-spamtrap at pino.selwerd.nl
Wed Sep 13 08:43:49 EDT 2000
More information about the Python-list mailing list
Wed Sep 13 08:43:49 EDT 2000
- Previous message (by thread): Problem whit float precision, 1.6 Windows 98
- Next message (by thread): Problem whit float precision, 1.6 Windows 98
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Juan Huertas wrote in comp.lang.python: > Thank You, Remco. > > But there are other problems whit the precision, for example: > > >>> round(2020.685,2) > 2020.6900000000001 > > Acording the Python Documentation, round(v,n): > > Return the floating point value x rounded to "n digits after the decimal > point" Same problem - 2020.69 can't be represented either. What you get is the best possible approximation. Moreover, repr() returns a string with the minimal amount of digits so that eval(repr(x)) == x always holds. But str(round(2020.685,2)) is "2020.69". The interactive interpreter uses repr() to display the result of expressions. Tim Peters is an expert on this, and he's posted a lot of things about floats. For instance in http://www.deja.com/=dnc/[ST_rn=ps]/getdoc.xp?AN=607818947 . Or if you want overkill, http://www.deja.com/=dnc/[ST_rn=ps]/getdoc.xp?AN=594131798 . There is mention of a module that implements decimal floats, which would behave like you'd expect, but I don't know if that's for Python and I don't know where to find it. Personally I would go for some fixed point solution using integers, wrapped in a Money class or something. -- Remco Gerlich, scarblac at pino.selwerd.nl Murphy's Rules, "Heavy-Duty Rapid Fire": In Traveler (GDW) a spaceship's weapons can fire only once every sixteen minutes. Most battles last several hours.
- Previous message (by thread): Problem whit float precision, 1.6 Windows 98
- Next message (by thread): Problem whit float precision, 1.6 Windows 98
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list