`a/(a+b)`

. That function threw a `ZeroDivisionError`

at me this afternoon, so I decided to change the equation to `a/(a+b+sys.minfloat)`

, because I felt that was more elegant than writing a conditional function to check if `(a + b) == 0`

. Turns out there is no 'minfloat' in the sys module, so I decided to write a function to calculate the smallest float myself.

>>> def minfloat(guess):

while(guess * 0.5 != 0):

guess = guess * 0.5

return guess

>>> minfloat(+1.0) # minimum positive value of a float

4.9406564584124654e-324

>>> minfloat(-1.0) # minimum negative value of a float

-4.9406564584124654e-324

But I couldn't stop there. Now I had to write a function to calculate the largest possible floating point value in Python, just for kicks:

>>> def maxfloat(guess = 1.0):

while(guess * 2 != guess):

guess = guess * 2

return guess

>>> maxfloat(+1.0) # maximum positive value of a float

inf

>>> maxfloat(-1.0) # maximum negative value of a float

-inf

This is interesting. Let's find out more about this "inf" value:

>>> inf

Traceback (most recent call last):

File "", line 1, in

inf

NameError: name 'inf' is not defined

>>> float("inf")

inf

>>> inf = maxfloat()

>>> inf + inf

inf

>>> inf - inf

nan

>>> 1 / inf

0.0

>>> 1/(-inf)

-0.0

Finally, check the relationship between minfloat and maxfloat:

>>> 1 / minfloat(1.0)

inf

>>> 1 / minfloat(-1.0)

-inf

## 272 comments :: Smallest And Largest Floating Point Values In Python

«Oldest ‹Older 401 – 272 of 272 Newer› Newest»## Post a Comment