array precision

Barry Drake bldrake1 at yahoo.com
Wed Feb 6 10:23:53 EST 2002


Maybe I'm missing something, but here is what I get:

Python 2.1.1 (#20, Jul 26 2001, 11:38:51) [MSC 32 bit (Intel)] on
win32
Type "copyright", "credits" or "license" for more information.
IDLE 0.8 -- press F1 for help
>>> import math
>>> n = 10
>>> nf = 10.0
>>> a = 1.0
>>> b = 0.5
>>> a/n
0.10000000000000001
>>> b + a/n
0.59999999999999998
>>> a/nf
0.10000000000000001
>>> b + a/nf
0.59999999999999998
>>> 

Python does double precision floats only (see Python Essential
Reference 2nd ed. by David Beazley, p.23).  Python implements IEEE
754: 17 digits of precision with exponent in -308 to 308.

         float     double
python   64 bits   64 bits
C        32 bits   64 bits

BTW, you might want to check out the Numeric module in the NumPy
distribution at http://numpy.sourceforge.net.

Barry Drake

"Jason Orendorff" <jason at jorendorff.com> wrote in message news:<mailman.1012956250.23108.python-list at python.org>...
> Hugo Martires writes:
> > suposing that n=10 we get: myArray[0] = 0.600000023 ("something 
> > like this")
> > 
> > but if i do: myArray[i] + (1.0/n) it give's me 0.6
> > 
> > what's the problem of the array, and how can i solve this ?
> 
> It's only half of the normal precision.  From the documentation:
> 
>     The following type codes are defined:
>         Type code   C Type             Minimum size in bytes
>         'f'         floating point     4
>         'd'         floating point     8
> 
> Try using 'd' instead of 'f'.
> 
> ## Jason Orendorff    http://www.jorendorff.com/



More information about the Python-list mailing list