Python 中的计算分歧

Calculation divergence in Python

我在 Python 中做了这个计算:

    ((1.00044*(1.00175/1.00044)**(252/(4-1))**((1-1)/252))**(252/1)-1)*100

    55.36617662154271

Excel 中的相同计算结果为:11,7234。

造成这种分歧的原因是什么?

在Excel和Python中,你的表达可以简化为:

((1.00044*(1.00175/1.00044)**84**0)**252-1)*100

区别在于它们计算幂表达式的方式(求幂)。 Python 跟随 应用 right-associative 求幂。 2 ** 3 ** 4 == 2 ** (3 ** 4) == 2417851639229258349412352。在 Excel 中,求幂是 left-to-right 所以 2 ^ 3 ^ 4 被计算为 (2 ^ 3) ^ 4 = 4096.

如果您添加方括号使 Python 在 **0 之前计算 **84,那么您会得到与 Excel:

相同的结果
((1.00044*((1.00175/1.00044)**84)**0)**252-1)*100   # 11.7234

或者如果您在不同的地方添加括号,您可以在 Excel 中得到 Python 结果:

=((1.00044*(1.00175/1.00044)^(84^0))^252-1)*100   # 55.366