下面的代码给出了不同的输出,我不知道为什么。我有基本的编程知识,所以如果很明显请原谅我。
Num = -0.8
Print(-0.8**-0.8)
Print(Num**Num)
输出:
-1.1954406247375462
(-0.967131781178879-0.7026623692120304j)
为什么第二个输出给出一个虚数作为输出?我基本上想要第一个输出,但使用变量而不是实际数字。
我尝试了
print(-(Num)**Num))
,因为我认为这是一个运算符优先级问题,但结果仍然相同。顺便说一句,输出的差异仅在负浮点数时才明显。
**
的优先级高于一元-
。所以-0.8**-0.8
是- (0.8**-0.8)
,代表-(0.8−0.8),大约-1.1954406247375462。
(-0.8)**-0.8
给出与 Num**Num
表达式 (-0.967131781178879-0.7026623692120304j)
相同的结果。
我基本上想要第一个输出,但使用变量而不是实际数字。
鉴于您将 -0.8 分配给
Num**Num
,这不适用于 Num
。 −1.1954406247375462 不是该求幂的正确结果。如果您将 0.8 分配给 Num
,则可以使用 - Num**-Num
。
加上括号效果更好:
Num = -0.8
print((-0.8)**(-0.8))
print(Num**Num)
结果:
(-0.967131781178879-0.7026623692120304j)
(-0.967131781178879-0.7026623692120304j)