1

我需要确定任意精度到101 个有效位置的给定 f浮点数 x的第 n 个(n 是一个正 32 位整数)。然而,我使用牛顿法的方法只给出了小数点后 53 位的结果。任何这样的帮助将不胜感激

#include <bits/stdc++.h>
using namespace std;

double nthRoot(double A, int N)
{
    double xPre = rand() % 10;//INITIAL GUESS
    double eps = 1e-100;//SETTING PRECISION
    double delX = INT_MAX;//SETTING DIFFERENCE BETWEEN VALUES OF 'X'
    double xK;
    while (delX > eps)
        {
            xK = (double)((N - 1.0) * xPre +(double)A/pow(xPre, N-1)) 
                 /(double)N;//FORMULA FROM NEWTON'S METHOD
            delX = abs(xK - xPre);
            xPre = xK;
        }
    return xK;
}

int main()
{
    int N;
    double A;
    cin>>N>>A;
    double nthRootValue = nthRoot(A, N);
    cout.setf(ios::showpoint);
    cout.precision(100);
    cout <<"\n"<< "Nth root is " << nthRootValue << endl;
    return 0;
}
4

0 回答 0