C++ 如何计算c++;

C++ 如何计算c++;,c++,math,C++,Math,我试图计算一个数字的第三个根 例如,如果 n=8->2; 如果n=27->3 pow函数在平方根(x^0.5)上运行良好,但在第三根(x^1/3)上不运行,这是为什么 #include <iostream> #include <math.h> using namespace std; int main() { int e = 0.3; double k; cout << "Enter k:" << endl; c

我试图计算一个数字的第三个根

例如,如果 n=8->2; 如果n=27->3

pow函数在平方根(x^0.5)上运行良好,但在第三根(x^1/3)上不运行,这是为什么

#include <iostream>
#include <math.h>

using namespace std;

int main() {
    int e = 0.3;
    double k;
    cout << "Enter k:" << endl;
    cin >> k;
    k = pow(k, e);
    cout << "The result of k^1/3 " << k << endl;
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
int e=0.3;
双k;
库特k;
k=功率(k,e);
两个问题:

  • 您将
    e
    声明为
    int
    但尝试在其中存储
    double
    值,因此它会被截断。您需要将
    e
    声明为
    double
    以正确存储该值
  • 您用于
    e
    的值不正确。
    0.3
    1.0/3.0
    不同,因此您的结果将被关闭。请改用
    1.0/3.0
    作为此值
两个问题:

  • 您将
    e
    声明为
    int
    但尝试在其中存储
    double
    值,因此它会被截断。您需要将
    e
    声明为
    double
    以正确存储该值
  • 您用于
    e
    的值不正确。
    0.3
    1.0/3.0
    不同,因此您的结果将被关闭。请改用
    1.0/3.0
    作为此值

您已将指数声明为整数,因此它将始终被指定为零。请将其声明为双精度

在你的主要尝试中

double e = 1.0/3.0;
double k;
cout << "Enter k:" << endl;
cin >> k;
k = pow(k, e);
cout << "The result of k^1/3 " << k << endl;
return 0;
double e=1.0/3.0;
双k;
库特k;
k=功率(k,e);

cout您已将指数声明为整数,因此它将始终被指定为零。将其声明为双精度

在你的主要尝试中

double e = 1.0/3.0;
double k;
cout << "Enter k:" << endl;
cin >> k;
k = pow(k, e);
cout << "The result of k^1/3 " << k << endl;
return 0;
double e=1.0/3.0;
双k;
库特k;
k=功率(k,e);

cout这里必须使用double:

double e = 1./3.;
而不是int

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    double e = 1./3.; // <- this line is changed!
    double k;
    cout << "Enter k:" << endl;
    cin >> k;
    k = pow(k, e);
    cout << "The result of k^1/3 " <<k << endl;
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){

double e=1./3.//此处必须使用double:

double e = 1./3.;
而不是int

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    double e = 1./3.; // <- this line is changed!
    double k;
    cout << "Enter k:" << endl;
    cin >> k;
    k = pow(k, e);
    cout << "The result of k^1/3 " <<k << endl;
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){

双e=1./3;//您已将e声明为int,并将值0.3(3/10)(将向下转换为0)而不是1/3
。3
不等于
1.0/3
@Ben-没有转换。该值转换为0。问题为(1/3)另外,为什么不直接使用
cbrt
函数呢?您已经声明e为int,并将值0.3(3/10)(将向下转换为0)而不是1/3
。3
不等于
1.0/3
@Ben-没有转换。该值被转换为0。抛开(1/3)的问题,为什么不直接使用
cbrt
函数呢?