Floating point minimum and maximum exponent values

Chris Angelico rosuav at gmail.com
Tue Jul 16 08:04:25 EDT 2013


On Tue, Jul 16, 2013 at 9:43 PM, Marco <m.b at gmail.com> wrote:
> Hi all, why the maximum and minimum exp values are 1024 and -1021?:
>
>>>> sys.float_info
> sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308,
> min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15,
> mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
>
> The values (in double precision) 0 and 2047 are reserved for zero, infinity
> and NaN (in combination with the fraction), so I was expecting -1022 and
> 1023...

Piece of extreme oddity, this.

>>> help(sys.float_info)
... lots of other info ...
 |  max_exp
 |      DBL_MAX_EXP -- maximum int e such that radix**(e-1) is representable
 |
 |  min_exp
 |      DBL_MIN_EXP -- minimum int e such that radix**(e-1) is a
normalized float
...

So it's technically correct. Followup question: Why is it off by one?

ChrisA



More information about the Python-list mailing list