当用程序实现求pi的值时,也许你能够很快写出算法(利用求pi的几个公式),但是由于使用单变量保存结果,限于计算机硬件对变量的表示范围有限,因此,最多只能计算出pi值小数点后十多位。但需要得到一个更大位数的pi值时,就得考虑其他的算法。
我们采用这个公式计算pi: pi/2 = 1+1/3+1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9+......
在计算上述公式的个分式值时,由于1/3这类的分数是无限循环小数,而使用单变量时,由于变量能表示的范围有限,因此,多余的部分将被舍去。为了提高精度,这时可以定义数组来逐位保存无限循环小数,例如:定义有20个元素的数组temp,每个元素保存一位数,则2/3的结果讲师如下效果:
位0 位19
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6

这篇博客介绍了一种计算π值的算法,通过利用公式pi/2 = 1+1/3+1/3*2/5 + ...逐步累加分式,使用数组逐位保存无限循环小数以提高精度。在计算过程中,不断对数组进行乘法、进位处理和除法,直到数组元素全为0或达到预设的循环次数。提供了程序代码并提及《零基础学算法》作为参考。


被折叠的 条评论
为什么被折叠?



