如果 -1 < x < 0,为什么 Python return 是操作 x**x 的复数?
Why does Python return a complex number for operation x**x if -1 < x < 0?
我在 Windows 10(64 位机器和 32 位 Python 3.7)。
在 IDLE 中,如果我输入:
>>> -0.001**-0.001
-1.0069316688518042
但如果我这样做:
>>> x = -0.001
>>> x**x
(1.006926699847276 -0.0031633639300006526j)
有趣的是,这个复数的大小与实际答案相同。
作为证明,我附上了相同的屏幕截图。
可能是什么原因造成的?
在第一种情况下,你没有得到复数,因为 **
的优先级高于 -
(在 Python 和数学中),所以你实际上是在做-(0.001 ** -0.001)
。试试 (-0.001) ** -0.001
.
复数是幂运算数学定义的"correct"答案。
在Python中,运算符**
的意思是to the power of
,负数取负次方会产生一个虚数,就像sqrt(-1)=i
一样。
如果你想要乘法,你应该使用 x*x
而不是 x**x
我在 Windows 10(64 位机器和 32 位 Python 3.7)。 在 IDLE 中,如果我输入:
>>> -0.001**-0.001
-1.0069316688518042
但如果我这样做:
>>> x = -0.001
>>> x**x
(1.006926699847276 -0.0031633639300006526j)
有趣的是,这个复数的大小与实际答案相同。
作为证明,我附上了相同的屏幕截图。
可能是什么原因造成的?
在第一种情况下,你没有得到复数,因为 **
的优先级高于 -
(在 Python 和数学中),所以你实际上是在做-(0.001 ** -0.001)
。试试 (-0.001) ** -0.001
.
复数是幂运算数学定义的"correct"答案。
在Python中,运算符**
的意思是to the power of
,负数取负次方会产生一个虚数,就像sqrt(-1)=i
一样。
如果你想要乘法,你应该使用 x*x
而不是 x**x