求圆周率的近似值的代码

题目要求如下:

img

我根据公式写的算法是这样的:


#include <iostream>
#include <iomanip>
using namespace std;

double jiecheng(int k)
{
    double s = 1;
    for(int i = 1; i <= k; i++)
    {
        s *= i;
    }
    return s;
}
double fenmu(int k)
{
    int s = 1;
    for(int i = 1; k >= 0; k--, i += 2)
    {
        s *= i;
    }
    return s;
}
int main()
{
    double temp1 = 1, temp2 = 1;
    int k = 0;
    double s = 0;
    double u;
    cin >> u;
    while(temp1 / temp2 >= u)
    {
    
        s += temp1 / temp2;
        k++;
        temp1 = jiecheng(k);
        temp2 = fenmu(k);
        
    
    }
    cout << setprecision(6) << 2.0 * s;
    return 0;
}

得出的结果接近题目给出的输出要求,但是不一样,请问是我的算法不够准确吗

img

#include <math.h>

const double PI = acos(-1.0);

听懂掌声