When I do floating point division in Python, if I divide by zero, I get an exception:
>>> 1.0/0.0
Traceback (most recent call last):
File \"
Method 1:
try:
value = a/b
except ZeroDivisionError:
value = float('Inf')
Method 2:
if b != 0:
value = a / b
else:
value = float('Inf')
But be aware that the value could as well be -Inf
, so you should make a more distinctive test. Nevertheless, this above should give you the idea how to do it.
If i understand your problem properly then this should be the solution:
try:
1.0/0.0
except:
return 'inf'
you can modified it according to various python exception handling method available
You could try using the 'decimal' module:
>>> from decimal import *
>>> setcontext(ExtendedContext)
>>> inf = Decimal(1) / Decimal(0)
>>> print(inf)
Infinity
>>> neginf = Decimal(-1) / Decimal(0)
>>> print(neginf)
-Infinity
>>> print(neginf + inf)
NaN
>>> print(neginf * inf)
-Infinity
>>> print(dig / 0)
Infinity
I used a wrapper function in a python program of mine for a simple division that was returning ZeroDivisionError when the sensors I was using weren't plugged in. It simply returns 0 (zero), which in real-world terms is what I wanted. Probably gets messy with more variables, however...
def calculation(a, b):
if a == 0:
return 0
elif b == 0:
return 0
else:
return a/b
The easiest way to get this behaviour is to use numpy.float64
instead of Python default float
type:
>>> import numpy
>>> numpy.float64(1.0) / 0.0
inf
Of course this requires NumPy. You can use numpy.seterr() to fine-tune the error handling.