为什么当我将字符串转换为浮点数时,我得到了不同的答案,而不是从一开始就使用浮点值



我正试图将2个字符串转换为浮点数,然后将一个提高到另一个的幂。由于某些原因,float('x') ** float('y')与x ** y的输出有时不相同

例如:

float('-5') ** float('-5') 
0.00032

-5 ** -5
0.00032

this is working fine;然而,有些数字并非如此。例如:

float('-5.04') ** float('-5.04')
-0.00028596440705202706+3.612570580059258e-05j

vs:

-5.04 ** -5.04
-0.0002882372438117746

(下面这个是正确答案)

对于为什么会发生这种情况有什么建议吗?

-5.04 ** -5.04被计算为-(5.04 ** -5.04),因为**比一元-具有更高的运算符优先级。您可以通过比较结果看到这一点:

>>> 5.04 ** -5.04
0.0002882372438117746
>>> -5.04 ** -5.04
-0.0002882372438117746
>>> -(5.04 ** -5.04)
-0.0002882372438117746

"fix"您需要在第一个带有一元-:

的数字周围添加圆括号。
>>> (-5.04) ** -5.04
(-0.0002859644070520271+3.6125705800592075e-05j)

相关内容

最新更新