这是我的代码:
import cmath
root = (cmath.sqrt(25))
print (root)
raw_input()
我面临的问题是root的结果是5 + 0j,这是不可取的,我只想要平方根。我该如何解决这个问题?
答案 0 :(得分:6)
使用math
模块而不是cmath
模块;后者仅用于复数:
>>> import math
>>> print math.sqrt(25)
5.0
对于它的价值,cmath
结果是正确的,如果您期望复数。您可以只获取结果的.real
组件,但由于math
模块中存在等效的常规浮点,因此您的计算机无需执行额外的工作。
答案 1 :(得分:3)
结果本身是正确的。 25 + 0j
的平方根为5 + 0j
。
j
来自哪里?它是隐含的,因为您正在使用复杂的数学(cmath
)库。
如果您只想要复数的 real 部分,请执行以下操作:
>>> root = (cmath.sqrt(25))
>>> root.real
5.0
最后,如果您只想处理实数,请使用math
库。
答案 2 :(得分:0)
结果是正确的!
那是因为您正在使用复杂的数学库来查找平方根。
毕竟,
5+0j
是25的复数平方根:
(5+0j)*(5+0j) = 25 + 2*0j + (0j)^2 = 25 + 0 + 0 = 25
使用math
模块代替“常规”平方根。
或者:通过以下方式访问实际部分:
root.real
通常,您可能希望使用复数而不是自然数来表示一般性和数学错误检测 - 但这是另一种讨论。
答案 3 :(得分:0)
cmath
适用于复数,而不是实数。应该可以!
import math
import cmath
def sqrt(n):
if n < 0:
return cmath.sqrt(n)
else:
return math.sqrt(n)