Почему эта операция не дает мне большей точности?

0

Я оцениваю значение Pi, используя следующую формулу:

Изображение 174551

Используя следующий код 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++, но не в программировании.

Теги:
floating-point

1 ответ

5
Лучший ответ

проблема в том, что вы не печатаете все исправления. вам нужно позвонить,

std::cout << std::setprecision(10) << ...
  • 0
    Ах, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню