How to get NaN when I divide by zero
在python中进行浮点除法时,如果除以零,则会得到一个异常:
1 2 3 4 | >>> 1.0/0.0 Traceback (most recent call last): File"<stdin>", line 1, in <module> ZeroDivisionError: float division |
我真的想让
我该怎么做?
获得这种行为的最简单方法是使用
1 2 3 | >>> import numpy >>> numpy.float64(1.0) / 0.0 inf |
当然,这需要麻木。您可以使用
方法1:
1 2 3 4 | try: value = a/b except ZeroDivisionError: value = float('Inf') |
方法2:
1 2 3 4 | if b != 0: value = a / b else: value = float('Inf') |
但请注意,该值也可以是
您可以尝试使用"十进制"模块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> 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 |
如果我正确理解您的问题,那么这应该是解决方案:
1 2 3 4 | try: 1.0/0.0 except: return 'inf' |
您可以根据各种可用的python异常处理方法对其进行修改。
我在我的python程序中使用了一个包装函数来做一个简单的除法,当我使用的传感器没有插入时,这个除法返回零除法错误。它只返回0(零),这在现实世界中是我想要的。但是,可能会因为更多的变量而变得混乱…
1 2 3 4 5 6 7 | def calculation(a, b): if a == 0: return 0 elif b == 0: return 0 else: return a/b |