2013-03-10 104 views
-6

的平方根這裏是我的代碼:號蟒蛇

import cmath 
root = (cmath.sqrt(25)) 
print (root) 
raw_input() 

我面臨的問題是根本的結果,5 + 0J這是不可取的,我只希望平方根。我怎樣才能解決這個問題?

+0

'cmath'很好,如果你想知道'sqrt(-25)':) – nneonneo 2013-03-10 13:19:40

回答

6

使用math模塊代替cmath模塊;後者僅用於複數:

>>> import math 
>>> print math.sqrt(25) 
5.0 

對於它的價值,在cmath結果是正確的,如果你預期複數。您可以僅使用結果的.real組件,但由於在math模塊中存在相同的常規浮點,所以您的計算機不需要額外的工作。

0

結果是正確的!

這是因爲您正在使用複雜的數學庫來查找平方根。

畢竟,

5+0j 

處於25的複雜平方根:

(5+0j)*(5+0j) = 25 + 2*0j + (0j)^2 = 25 + 0 + 0 = 25 

使用math模塊而不是爲 「常規」 平方根。

或者:通過使用獲得的實部:

root.real 

一般情況下,你可能需要使用複數,而不是自然數的普遍性和算術錯誤檢測 - 但這是另一個討論。

3

結果本身是正確的。 25 + 0j的平方根是5 + 0j

j從哪裏來?其隱含的,因爲你正在使用複雜的數學(cmath)庫。

如果你只是想在複數的實部分,然後執行:

>>> root = (cmath.sqrt(25)) 
>>> root.real 
5.0 

最後,如果你想只處理實數,然後使用math庫。