我知道如何使用sqrt
函数获取数字的平方根。
如何获取数字的立方根?
答案 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)
答案 3 :(得分:0)
x的第n个根等于x ^(1 / n),因此请使用std::pow
。但是我没有看到这与运算符重载有什么关系。
答案 4 :(得分:0)
sqrt()
不是运营商。sqrt()
。请解释为什么你需要重载`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