为什么这个操作不能给我更高的精度?

DC_*_*DC_ 0 c++ floating-point

我正在使用以下公式估算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";
Run Code Online (Sandbox Code Playgroud)

我的问题是,即使在1000(或100000这个问题)迭代,我得到的最高精度是3.14159.我已尝试static_cast<double>()在计算中使用每个数字,但仍然得到相同的结果.我在这里做错了什么,或者这是这种方法产生的最大精度?我是C++的新手,但不是编程.

Zac*_*ler 5

问题是你不打印所有精度.你需要打电话,

std::cout << std::setprecision(10) << ...
Run Code Online (Sandbox Code Playgroud)