0

我使用以下公式估计 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++ 新手,但不是编程新手。

4

1 回答 1

5

问题是你没有打印所有的精度。你需要打电话,

std::cout << std::setprecision(10) << ...
于 2013-10-11T23:54:37.827 回答