這裏的時候就是我寫:數學域錯誤使用日誌
>>> import math
>>> 2/3*math.log(2/3,2)
這是我得到的錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
能有人請解釋我在做什麼錯誤? 謝謝。
這裏的時候就是我寫:數學域錯誤使用日誌
>>> import math
>>> 2/3*math.log(2/3,2)
這是我得到的錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
能有人請解釋我在做什麼錯誤? 謝謝。
問題是您可能正在使用python 2.7。在這個版本2/3中給出結果0(零)。和日誌功能,沒有定義爲0試試這個:
2/3.0*math.log(2/3.0,2)
在Python 3.5這個問題不會發生。
這解釋了它。非常感謝! – kudesiaji
我假設這是Python 2.7。
在2.7中,默認情況下,2/3的值自0以來分爲0。因此你正在嘗試一個日誌0,因此錯誤。另一方面,Python 3默認進行浮點除法。
要獲得正確的行爲,你可以:
from __future__ import division
,讓您在Python 2.7 Python的3個師的行爲。2/3
替換爲2/float(3)
或2/3.0
。謝謝你解釋這個! – kudesiaji
'(2/3)* math.log(2,2)/math.log(3,2)'將起作用 –