将中间值赋给变量使计算结果变得复杂

kha*_*air 4 python operators

如果我将中间步骤之一分配给变量,Python 会给出不同的结果,如下所示:

>>> -0.207 ** 0.66 - 1
-1.3536229379434348
>>> a = -0.207
>>> a ** 0.66 - 1
(-1.1703591496008927+0.30988214273656856j)
Run Code Online (Sandbox Code Playgroud)

对于这个简单的计算,如果我分配-0.207给一个临时变量a,则 的结果将a ** 0.66 - 1计算为复数。

为什么会发生这种情况?如何阻止 Python 这样做?

Adi*_*did 5

你的陈述的正确答案(根据Python)是一个负数。-0.207**0.66-1评估约为-1.35.
发生这种情况的原因是您在一句台词中计算错误: -0.207 ** 0.66 - 1实际上评估结果-(0.207 ** 0.66) - 1(-0.207) ** 0.66 - 1您的预期不同。

当您分隔行时,您正在将计算更改为第二个语句。

为了阻止这种情况发生,请在可能存在歧义的地方使用明确的括号。