Python 指数运算符和复数

Python exponent operator and complex numbers

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

求浮点数的负整数的平方根在数学上总是被认为是复数。 python指数运算符如何支持得到complex数?

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

试试 (-1)**0.5

-1**0.5被解析为-(1**0.5),等于-1.

>>> -1**0.5
-1
>>> (-1)**0.5
(6.123e-17+1j)

先求幂,再求符号。要获得您想要的结果,请使用括号确保 - 符号与 1:

保持一致
>>> -1**0.5
-1.0
>>> (-1)**0.5
(6.123233995736766e-17+1j)

在数学运算顺序中,求幂在乘法之前,一元减号算作乘法(乘以 -1)。所以你的表达式和-(1**0.5)一样,不涉及任何虚数。

如果你这样做 (-1)**0.5 你会在 Python 2 中得到一个错误,因为答案不是实数。如果你想要一个复杂的答案,你需要通过 (-1+0j)**0.5 使用复杂的输入。 (在 Python 3 中,(-1)**0.5 将 return 一个复杂的结果。)

Python 是正确的,因为 -1**0.5 不同于 (-1)**0.5

第一个计算 one0.5 次方并将结果取反。

第二个如预期的那样将 -1 提高到相同的幂并且 returns 是一个复数。