4

我正在尝试在 Python 中做一个零对数。

from math import log
log(0)

这给我带来了一个例外。

ValueError: math domain error

我知道log负数的 a 在数学上是未定义的,这就是 Pythonlog可以引发此ValueError异常的原因。但是为什么在用零值调用它时也会引发异常?它应该返回一个-inf值,并且我已经看到可以在 Python 中表示无限数(如此处所示)。

我可以在不亲自处理的情况下处理这个问题吗?我的意思是个人在做这样的事情时。

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

1 回答 1

9

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

在此处输入图像描述

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

于 2017-03-23T15:24:14.927 回答