Smallest And Largest Floating Point Values In Python In my production code


In my production code,Smallest And Largest Floating Point Values In Python
In my production code, I have a function that calculates 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

Post a Comment

0 Comments