首页 > 解决方案 > 如果 -1 < x < 0,为什么 Python 会为操作 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)

有趣的是,这个复数的大小与实际答案相同。

作为证明,我附上了相同的屏幕截图。

这可能是什么原因造成的?

标签: pythoncomplex-numbers

解决方案


在第一种情况下,你没有得到一个复数,因为**它的优先级高于-(在 Python 和数学中),所以你实际上是在做-(0.001 ** -0.001). 试试(-0.001) ** -0.001

复数是幂运算的数学定义的“正确”答案。


推荐阅读