2013-03-10 74 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库。