使用日志时python中的数学域错误

时间:2016-12-07 10:40:00

标签: python math logarithm

以下是我写的内容:

>>> import math
>>> 2/3*math.log(2/3,2)

以下是我遇到的错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error

有人可以解释一下我做错了什么吗? 感谢。

2 个答案:

答案 0 :(得分:5)

我假设这是Python 2.7。

在2.7中,默认情况下,2/3因为分区而评估为0。因此,您尝试记录0,因此出错。另一方面,Python 3默认执行浮点除法。

要获得正确的行为,您可以:

  1. from __future__ import division,它在Python 2.7中为您提供Python 3分区行为。
  2. 将每个2/3替换为2/float(3)2/3.0

答案 1 :(得分:1)

问题是你可能正在使用python 2.7。在这个版本中,2/3给出了结果0(零)。并且日志功能未定义为0.尝试此:

2/3.0*math.log(2/3.0,2)

在Python 3.5中,这个问题不会发生。