如果 -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