Можно ли сделать цикл while в C ++, пока десятичная дробь не достигнет определенной точности? Я хочу сделать длинный расчет для arctan, а затем pi, и я хочу, чтобы цикл работал до тех пор, пока pi не будет вычислено с точностью до десятого знака после запятой по формуле pi = 4 (arctan (1.0)). Я вручную вычисляю арктан, используя формулу ряда Тейлора. Я знаю, что есть встроенные функции для этих вычислений, но это домашнее задание, поэтому я должен сделать это так. Я не ищу решение проблемы, просто возможен ли цикл с использованием точности. Спасибо!
Edit:
Я все еще застрял с этим! Я не могу придумать правильный аргумент для цикла while, даже после того, как перебрал все намеки. Действительно нужна помощь. Вот код, который я придумал:
#include <iomanip>
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
int i;
long double result;
long double pi;
int y=3;
int loopcount=0;
long double precision;
cout<<"Start\n";
result=1-(pow(1,y)/y);
do
{
y=y+2;
result=result+(pow(1,y)/y);
y=y+2;
result=result-(pow(1,y)/y);
pi=4*(result);
precision=(pi*(pow(10,11))/10);
loopcount++;
}
while(//This is the problem!);
cout<<"Final Arctan is:"<<endl;
cout<<setprecision(20)<<result<<endl;
cout<<"Final Pi is:"<<endl;
cout<<setprecision(9)<<pi1<<endl;
cout<<"Times looped:"<<endl;
cout<<loopcount<<endl;
return 0;
}