我刚刚做了一个计算圆周率的程序。然而,即使有 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;
}
任何与性能相关的提示也将不胜感激。