C++编程求助,财富值不是问题

2025-05-13 01:27:12
推荐回答(1个)
回答(1):

#include 
#include 
#include 
using namespace std;
double pi(double);
int main(void) {
    for (;;) {
        double epsilon;
        cout << "Enter epsilon(-999 to stop): ";
        cin >> epsilon;
        if (epsilon == -999) break;
        cout << "pi = " << setprecision(-floor(log10(epsilon))) << pi(epsilon) << endl;
    }
    return 0;
}
double pi(double epsilon) {
    double pi_2, new_pi_2 = 1.0;
    int i = 1;
    do {
        double k = 1.0;
        int j;
        pi_2 = new_pi_2;
        for (j = 1; j <= i; j++) {
            k = k * double(j) / (j * 2 + 1);
        }
        i++;
        new_pi_2 += k;
    } while ((new_pi_2 - pi_2) * 2 > epsilon);
    return new_pi_2 * 2;
}