Python指数运算符和复数

时间:2016-12-09 07:00:21

标签: python complex-numbers exponent

为什么python会print(type(-1**0.5))返回float而不是complex

获取float的负整数的平方根始终在数学上被视为复数。 python指数运算符如何支持获取complex数字?

print(type(-1**0.5))
 <type 'float'>    

4 个答案:

答案 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提升到相同的功率并返回预期的复数。