Python

时间:2017-03-23 15:19:07

标签: python logarithm valueerror

我试图在Python中做零对数。

from math import log
log(0)

这引起了我的例外。

ValueError: math domain error

我理解,log的负数在数学上是未定义的,这就是为什么Python log可以引发此ValueError异常的原因。但是为什么在用零值调用它时也会引发异常呢?它应返回-inf值,并且我已经看到无限数字可以用Python表示(as in here)。

我可以在没有亲自对待的情况下处理这个问题吗?我的意思是亲自做这样的事情。

from math import log, inf
foo = ... # Random value.
if foo != 0: return log(foo)
else: return -inf

1 个答案:

答案 0 :(得分:7)

实际上Python并没有错。零的对数也是未定义的,这是因为它是一个限制,它只是从右边而不是从左边-inf

enter image description here

所以,不,你必须自己处理。这是错的,但你可以这样做。像这样:log(x) if x != 0 else -inf