为什么在编码求幂时使用值或变量时会得到不同的结果?

问题描述 投票:0回答:2

下面的代码给出了不同的输出,我不知道为什么。我有基本的编程知识,所以如果很明显请原谅我。

Num = -0.8

Print(-0.8**-0.8)

Print(Num**Num) 

输出:

-1.1954406247375462

(-0.967131781178879-0.7026623692120304j)

为什么第二个输出给出一个虚数作为输出?我基本上想要第一个输出,但使用变量而不是实际数字。

我尝试了

print(-(Num)**Num))
,因为我认为这是一个运算符优先级问题,但结果仍然相同。顺便说一句,输出的差异仅在负浮点数时才明显。

python variables floating-point exponent negative-integer
2个回答
1
投票

**
的优先级高于一元
-
所以
-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


-1
投票

加上括号效果更好:

Num = -0.8

print((-0.8)**(-0.8))

print(Num**Num) 

结果:

(-0.967131781178879-0.7026623692120304j)
(-0.967131781178879-0.7026623692120304j)
© www.soinside.com 2019 - 2024. All rights reserved.