2016-12-07 45 views
0

這裏的時候就是我寫:數學域錯誤使用日誌

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

這是我得到的錯誤:

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

能有人請解釋我在做什麼錯誤? 謝謝。

+0

'(2/3)* math.log(2,2)/math.log(3,2)'將起作用 –

回答

1

問題是您可能正在使用python 2.7。在這個版本2/3中給出結果0(零)。和日誌功能,沒有定義爲0試試這個:

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

在Python 3.5這個問題不會發生。

+0

這解釋了它。非常感謝! – kudesiaji

5

我假設這是Python 2.7。

在2.7中,默認情況下,2/3的值自0以來分爲0。因此你正在嘗試一個日誌0,因此錯誤。另一方面,Python 3默認進行浮點除法。

要獲得正確的行爲,你可以:

  1. from __future__ import division,讓您在Python 2.7 Python的3個師的行爲。
  2. 將每個2/3替換爲2/float(3)2/3.0
+0

謝謝你解釋這個! – kudesiaji