在C ++中查找数字的第n个根

时间:2014-01-15 15:26:51

标签: c++ math

我正在尝试创建一个数学库,其中一个函数找到了一个浮点数的第n个根。

我目前的表达是 -

value = value ^ 1/rootValue

但我收到错误,因为我正在使用浮动。 还有另一种解决方法吗?

5 个答案:

答案 0 :(得分:11)

C ++中没有“power”操作符; ^是按位异或运算符,仅适用于整数。

相反,标准库中有一个函数:

#include <cmath>

value = std::pow(value, 1.0/root);

答案 1 :(得分:0)

^运算符没有按照您的想法执行 - 它不是幂运算符,而是按位异或。

查看math库中的pow

答案 2 :(得分:0)

^不是你想要的。它是一个按位异或运算符。

使用

#include <math.h>

然后

value = pow(value, 1/rootvalue)

pow的参考:http://www.cplusplus.com/reference/cmath/pow/

答案 3 :(得分:0)

^ 按位XOR 运算符。 使用 pow()功能。

答案 4 :(得分:0)

根据wikipage

#include <iostream>

using namespace std;
double exp(double, double);
double n_root_(double, double);
int main()
{
    double v = n_root_(27,3);
    cout << v << endl;
    return 0;
}

double exp(double a, double b){
    double t(1);
    for(int i = 0;i<b;++i)
        t *= a;
    return t;
}
double n_root_(double num, double n_){
    double x;
    double A(num);
    double dx;
    double eps(10e-6);
    double n(n_);
    x = A * 0.5;
    dx = (A/exp(x,n-1)-x)/n;
    while(dx >= eps || dx <= -eps){
        x = x + dx;
        dx = (A/exp(x,n-1)-x)/n;
    }
   return x;
}