Python, mysql, floating point values question

John Machin sjmachin at lexicon.net
Sat Jul 2 06:13:47 CEST 2005


Terry Hancock wrote:
> On Friday 01 July 2005 05:40 pm, Christopher Kang wrote:
> 
>>Anyway, I have a problem where I am pulling floating point values out
>>of mysql and into python using the MYSQLdb module.
>>
>>However, the values seem to be altered a little when I store them in python.
> 
> 
> I'm not even going to start to explain why, but this is a given with
> floating point values. They *always* have a degree of imprecision.
> You're just tickling this problem by changing representations from
> Python to SQL and back.
> 
> Long, long ago when all I knew how to program in was Basic and
> Fortran, I learned the fundamental rule of comparing floats --- you
> must always allow a tolerance, e.g.:
> 
> epsilon = 0.0001
> if abs(a-b) > epsilon:
>     print "a ~= b"
> else:
>     print "a != b"
> 
> There is no "equals" with floating point numbers. Just remember that,
> and you'll go far. ;-)
> 
> As for how to do this in SQL? I'm pretty sure that you can do
> ranges in SQL, but I'd have to look up the syntax for inequality
> statements.

x BETWEEN y AND z

   The python equivalent would be to write it out as:
> 
> if  a > b-epsilon and a < b+epsilon:
>     print "a~=b"
> 

Try this:

    if b-epsilon < a < b+epsilon:




More information about the Python-list mailing list