以精度为条件的 while 循环

ado*_*tyd 1 c++ math floating-point while-loop

是否可以在 C++ 中进行 while 循环,直到小数达到一定精度?我想对 arctan 和 pi 进行长时间的计算,并且我希望循环运行,直到使用公式 pi=4(arctan (1.0)) 将 pi 计算到小数点后第 10 位。我正在使用泰勒级数公式手动计算反正切。我知道这些计算有内置函数,但这是一项家庭作业,所以我必须这样做。我不是在寻找问题的解决方案,只是寻找使用精度的循环是否可行。谢谢!

编辑:

我仍然坚持这个!即使在仔细阅读了每个人的提示之后,我也无法为 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;
}
Run Code Online (Sandbox Code Playgroud)

per*_*eal 5

据我所知,您可以通过检查之前迭代的改进来计算精度。如果小数点后 10 位稳定,则中断循环。

要获得 的第 k 个十进制数字n,将其乘以 10 的 幂k并获得最低有效数字。例如,要得到 3.47 中的第二个十进制数字 7,乘以 100 得到 347 并得到 7 347 % 10