我正在使用 Python 尝试一些 pi 近似方法,我发现了这个:
pi / 4 = 1/1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 ...
我的代码如下所示:
s = 0
for n in range(1, 1_000):
s += (n % 2 - 0.5) / (n - 0.5)
print(4 * s)
这就是输出:
3.142593654340044
然后我改变了一件事:
print(4 * s - 1 / n)
并且输出不同:
3.141592653339043
看起来减去“1/n”会使近似值更高。迭代次数为 1_000。对于 1_000_000 这样的值,代码也会给出此输出,但对于(例如)1_001,则不会。为什么?
没有希望。
数学家们试图以任何方式获得接近 $\pi$ 的实数。
计算机更糟糕。我对 phyton 特别了解,但任何计算机上所有所谓的“真实”值都是由最终的位数表示的。
更糟糕的是,任何计算机都必须对其无法表示的内容进行舍入(除了自然数的任何表示形式,否则会出现溢出)。
举个例子,尝试一除以 3,然后乘以三。一除以三不能存储为数字,也不能永远拼出 1/3=0.3333333...。
因此浮点计算永远是不完美的。