我使用以下公式估算Pi的值:
使用以下C ++代码:
double sub = 0;
int prec = 1000; //How many iterations to use in estimate.
for(int i = 1; i <= prec; i++){
double frac = 1/((3+(2*(i-1))) * pow(3, i));
sub += (i == 1) ? 1-frac : (i%2) ? -frac : frac;
}
double pi = sqrt(12)*sub;
cout << "Pi estimated with precision of " << prec << " iterations is " << pi << ".\n";
我的问题是,即使经过1000次(或100000次迭代),我得到的最高精度也是
3.14159
。我尝试在计算中的每个数字上使用static_cast<double>()
,但仍得到相同的结果。我在这里做错什么了吗,或者这是该方法将产生的最大精度?我是C ++的新手,但不是编程人员。 最佳答案
问题是您无法打印所有精度。你需要打电话
std::cout << std::setprecision(10) << ...