max / min / smallest float value on Python 2.5

duncan smith buzzard at urubu.freeserve.co.uk
Sun Feb 7 04:02:05 CET 2010


Christian Heimes wrote:
> duncan smith wrote:
>> Hello,
>>        I'm trying to find a clean and reliable way of uncovering 
>> information about 'extremal' values for floats on versions of Python 
>> earlier than 2.6 (just 2.5 actually).  I don't want to add a dependence 
>> on 3rd party modules just for this purpose.  e.g. For the smallest 
>> positive float I'm using,
>>
>>
>> import platform
>> if platform.architecture()[0].startswith('64'):
>>      TINY = 2.2250738585072014e-308
>> else:
>>      TINY = 1.1754943508222875e-38
>>
>>
>> where I've extracted the values for TINY from numpy in IDLE,
>>
>>
>>  >>> float(numpy.finfo(numpy.float32).tiny)
>> 1.1754943508222875e-38
>>  >>> float(numpy.finfo(numpy.float64).tiny)
>> 2.2250738585072014e-308
> 
> You are confusing a 32 / 64bit build with 32 / 64bit floats. Python's
> float type is build upon C's double precision float type on both 32 and
> 64 bit builds. The simple precision 32bit float type isn't used. The
> DBL_MIN and DBL_MAX values are equal on all platforms that have full
> IEEE 754 float point support. The radix may be different, though.
> 
> Christian

OK, this is the sort of confusion I suspected.  I wasn't thinking 
straight.  The precise issue is that I'm supplying a default value of 
2.2250738585072014e-308 for a parameter (finishing temperature for a 
simulated annealing algorithm) in an application.  I develop on 
Ubuntu64, but (I am told) it's too small a value when run on a Win32 
server.  I assume it's being interpreted as zero and raising an 
exception.  Thanks.

Duncan



More information about the Python-list mailing list