如何在C ++中获取多维数据集根?

时间:2013-08-07 12:46:23

标签: c++

我知道如何使用sqrt函数获取数字的平方根

如何获取数字的立方根

8 个答案:

答案 0 :(得分:51)

sqrt代表“平方根”,“平方根”意味着提升到1/2的力量。没有“带根2的平方根”或“带根3的平方根”这样的东西。对于other roots,您可以更改第一个字; 在您的情况下,您正在寻找如何执行立方体生根

在C ++ 11之前,没有特定的功能,但你可以回到第一原则:

  • 平方根:std::pow(n, 1/2.)(或std::sqrt(n)
  • 立方根:std::pow(n, 1/3.)(或自{+ 3}}起C ++ 11)
  • 第四根:std::pow(n, 1/4.)

如果您希望为n传递负值,请避免使用std::pow解决方案 - std::cbrt(n),这就是添加std::cbrt的原因:

std::cout << std::pow(-8, 1/3.) << '\n';  // Output: -nan
std::cout << std::cbrt(-8)      << '\n';  // Output: -2

N.B。 .非常重要,因为否则1/3会使用整数除法并生成0

答案 1 :(得分:8)

在C ++ 11中std::cbrt是作为数学库的一部分引入的,您可以refer

答案 2 :(得分:2)

include <cmath>
std::pow(n, 1./3.)

此外,在C ++ 11中,同一标题中有cbrt

Math for Dummies

答案 3 :(得分:0)

x的第n个根等于x ^(1 / n),因此请使用std::pow。但是我没有看到这与运算符重载有什么关系。

答案 4 :(得分:0)

  1. sqrt()不是运营商。
  2. 您无法重载sqrt()
  3. 请解释为什么你需要重载`sqrt()`以便我们可以帮你做你想做的事。

答案 5 :(得分:0)

我会劝阻上述任何一种方法,因为它们对我不起作用。我做了pow(64,1/3。)和pow(64,1/3。),但我得到的答案是3 这是我的逻辑。

ans = pow(n, 1/3.);
if (pow(ans, 3) != n){
   ans++;
}

答案 6 :(得分:0)

实际上,这一轮必须让上述解决方案奏效。

正确的解决方案

ans = round(pow(n,1 / 3.));

答案 7 :(得分:-1)

此问题的解决方案是

cube_root = pow(n,(float)1/3);

您应该#include <math.h>库文件

某些诸如Turbo C / C ++的编译器不支持cbrt()函数。

当我们编写类似cube_root = pow(n,1/3);的代码时,编译器会认为1/3 = 0(C / C ++中的除法问题),因此您需要使用(float)1/3进行类型转换,以获得正确的答案< / p>

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

int main(){
float n = 64 , cube_root ;
clrscr();
cube_root = pow(n , (float)1/3);
cout<<"cube root = "<<cube_root<<endl;
getch();
return 0;
}

立方根= 4