question about cx_Oracle .thanks

Steve Holden sholden at
Fri Jun 25 14:27:27 CEST 2004

Paul Watson wrote:
> "coolmenu" <menucool at> wrote in message
> news:a6a2957e.0406250233.402c2ddd at
>>David Fraser <davidf at> wrote in message
> news:<cbghcs$5m3$1 at>...
>>>coolmenu wrote:
>>>>why 42505.66---->42505.6600000000003???

>>Can someone give me a advice? how can i do?
>>donnt select number from oracle?
> This has nothing to do with Oracle.  This is the problem of representing
> floating point numbers on a binary system.  You may need to format the
> number for presentation.
>>>>x = 42055.66
> 42055.660000000003
>>>>print "the answer is %.2f" % (x)
> the answer is 42055.66
And, in fact, more generally, see:

which you will (I hope) appreciate does not just apply to Python. Python 
is confusing you by showing you the contents of your tuple as accurately 
as possible: your computer actually stores 4205.66 as 42505.660000000003 
- this is an accurate decimal representation of the binary value:

 >>> print repr(42055.66)

Even more confusingly, when you try it on a SPARC processor you may get 
slightly different answers. Wise programmers always round monetary 
calculations at every step along the way[1].


[1] Yes, I know this is a simplification, please let's not have yet 
another repeat of the eternal thread. Allow some room for pedagogy here!

More information about the Python-list mailing list