2013-10-11 31 views
0

我使用下面的公式估算Pi值:爲什麼這個操作不會給我更高的精度?

enter image description here

使用以下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++,但不是編程。

回答

6

問題是你不打印所有的精度。你需要撥打,

std::cout << std::setprecision(10) << ... 
+0

啊 - 謝謝你! –

相關問題