为什么python会print(type(-1**0.5))
返回float
而不是complex
?
获取float的负整数的平方根始终在数学上被视为复数。 python指数运算符如何支持获取complex
数字?
print(type(-1**0.5))
<type 'float'>
答案 0 :(得分:3)
在操作的数学顺序中,指数在乘法之前出现,而一元减去计数乘以(-1)。所以你的表达式与-(1**0.5)
相同,它不涉及任何虚数。
如果您执行(-1)**0.5
,您将在Python 2中收到错误,因为答案不是真实数字。如果您想要复杂的答案,则需要通过执行(-1+0j)**0.5
来使用复杂的输入。 (在Python 3中,(-1)**0.5
将返回复杂的结果。)
答案 1 :(得分:1)
请尝试(-1)**0.5
。
-1**0.5
等于1
。
>>> -1**0.5
-1
>>> (-1)**0.5
(6.123e-17+1j)
答案 2 :(得分:1)
首先进行取幂,然后将其符号反转。要获得所需的结果,请使用括号确保-
符号与1
保持一致:
>>> -1**0.5
-1.0
>>> (-1)**0.5
(6.123233995736766e-17+1j)
答案 3 :(得分:1)
Python是正确的,因为-1**0.5
与(-1)**0.5
不同。
第一个将一个提升到0.5
的幂并否定结果。
第二个将-1
提升到相同的功率并返回预期的复数。