圆周率的 e 为 1.0,我无法理解其背后的原因。在理解基础科学方面需要帮助

e to the pi gives 1.0 and I am unable to comprehend the why behind it. Need help in understanding the underlying science

我创建了一个简单的函数来求解 e 的幂 pi 解释 here

def e_to_power_pi(number):
    return (1 + (1/number)) ** (number * math.pi)

从外观上看,很简单的一段代码。但是看看这两个值的输出差异:

示例一:

e_to_power_pi(1000000000000000)

输出:

32.71613881872869

示例二:

e_to_power_pi(10000000000000000)

输出:

1.0

在拆解代码后,我了解到 1.0 来自这部分 1 + (1/number) 上面的代码。

当我进一步拆解时,我了解到 1/10000000000000000 输出正确答案 0.00000000000000001

但是当我添加 1 结果时 returns 1.0 而不是 1.00000000000000001.

我推测它必须是 python 中的默认四舍五入,它可能正在更改值。

我决定使用 round(<float>, 64) # where <float> is any computation taking place in code above 来尝试获得 64 位 post 十进制结果。但是当执行加法时我仍然遇到相同的结果,即 1.0.

有人可以指导我或指出我可以学习或进一步阅读的方向吗?

您正在使用双精度二进制浮点格式,具有 53 位有效数字精度,这不足以表示您的分数:

10000000000000001/10000000000000000 = 1.0000000000000001

IEEE 754 double-precision binary floating-point format: binary64

Mathematica 可以以比建筑强加的机器精度更高的精度运行。

Wolfram Language: MachinePrecision

下面的 Mathematica 屏幕截图显示您需要比 53 位 更高 的有效数字精度才能获得 1 以外的结果。

N 将小数结果数值化为要求的精度。机器精度是默认的;更高精度的计算在软件中完成。