我刚刚制作了一个计算pi的程序.然而,即使有1000万次迭代,我的结果也有点不对劲.我得到3.141592 7535897831,而早在早就错了.它应该是3.141592 653589793238 ...
所以我的问题是:在10 ^ -16之间获得至少一个准确答案所需的迭代量是多少
如果有人有兴趣,这是我的代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
long double pi = 4.0;
long double tempPi;
for (int i = 1, j = 3; i <= 10000000; i++, j+=2)
{
tempPi = static_cast<double>(4)/j;
if (i%2 != 0)
{
pi -= tempPi;
}
else if (i%2 == 0)
{
pi += tempPi;
}
}
cout << "Pi has the value of: " << setprecision(16) << fixed << pi << endl;
system("pause");
return 0;
Run Code Online (Sandbox Code Playgroud)
}
任何与性能相关的提示也将受到赞赏.
您正在使用Leibniz系列,它非常非常慢地收敛.在诸如您正在使用的交替序列中,第一个省略的术语提供了对估计误差的良好估计.您的第一个省略的术语是4/2000005,因此您应该期望精度低于六位有效数字.
注意:舍入误差,使用双精度数字与此处缺乏精度无关.唯一的因素是你使用的是蹩脚的算法.