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
。
第一个计算 one 的 0.5
次方并将结果取反。
第二个如预期的那样将 -1
提高到相同的幂并且 returns 是一个复数。
为什么 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
。
第一个计算 one 的 0.5
次方并将结果取反。
第二个如预期的那样将 -1
提高到相同的幂并且 returns 是一个复数。