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