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

kud*_*aji 0 python math logarithm

这是我写的:

>>> import math
>>> 2/3*math.log(2/3,2)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

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

JPE*_*EG_ 5

我假设这是Python 2.7.

在2.7中,默认情况下,除了分区之外,2/3的评估结果为0.因此,您正在尝试记录0,因此错误.另一方面,Python 3默认执行浮点除法.

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

  1. from __future__ import division,它为您提供Python 2.7中的Python 3划分行为.
  2. 2/32/float(3),或替换每个2/3.0.