python - 如果 -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)
有趣的是,这个复数的大小与实际答案相同。
作为证明,我附上了相同的屏幕截图。
这可能是什么原因造成的?
解决方案
在第一种情况下,你没有得到一个复数,因为**
它的优先级高于-
(在 Python 和数学中),所以你实际上是在做-(0.001 ** -0.001)
. 试试(-0.001) ** -0.001
。
复数是幂运算的数学定义的“正确”答案。
推荐阅读
- python - 重新网格化 nc 文件:Nctoolkit to_latlon 错误
- php - 如何防止发布重复值?
- html - 在使用 nth-of-type 和 first-of-type 时需要帮助
- python - 我无法通过 selenium 加载我的 chrome 配置文件
- angular - 角度/图形和 CORS
- rust - Rust:如何将 Entry API 与拥有的数据结合起来?
- python - 当我不使用任何全局变量时如何更新函数的返回值?
- macos - Homebrew:预下载公式的文件
- html - 引导复选框按钮错误
- javascript - React 更新 Array 内部的 State Array