C++ 如何在C++;?
我知道如何使用C++ 如何在C++;?,c++,C++,我知道如何使用sqrt函数获取数字的平方根 如何获得数字的立方根?x的第n个根等于x^(1/n),因此使用std::pow。但我不明白这与运算符重载有什么关系。包括 include <cmath> std::pow(n, 1./3.) 标准::功率(n,1./3) 此外,在C++11中,在相同的头中有cbrt .sqrt代表“平方根”,而“平方根”意味着提升到1/2的幂。没有“根为2的平方根”或“根为3的平方根”这样的东西。因为,你改变了第一个单词在您的案例中,您正在寻找如何执行
sqrt
函数获取数字的平方根
如何获得数字的立方根?x的第n个根等于x^(1/n),因此使用
std::pow
。但我不明白这与运算符重载有什么关系。包括
include <cmath>
std::pow(n, 1./3.)
标准::功率(n,1./3)
此外,在C++11中,在相同的头中有cbrt
.
sqrt
代表“平方根”,而“平方根”意味着提升到1/2
的幂。没有“根为2的平方根”或“根为3的平方根”这样的东西。因为,你改变了第一个单词在您的案例中,您正在寻找如何执行多维数据集根化
在C++11之前,没有特定的函数用于此,但您可以回到第一原则:
- 平方根:
(或)std::pow(n,1/2.)
- 立方根:
(或从C++11开始)std::pow(n,1/3.)
- 第四根:
std::pow(n,1/4.)
- 等等
如果希望为
n
传递负值,请避免使用std::pow
解决方案-,这就是添加std::cbrt
的原因:
std::cout << std::pow(-8, 1/3.) << '\n'; // Output: -nan
std::cout << std::cbrt(-8) << '\n'; // Output: -2
std::cout在C++11中std::cbrt
作为math库的一部分引入,您可以
sqrt()
不是运算符
不能重载sqrt()
请解释为什么您需要重载sqrt()
,以便我们可以帮助您做您想做的事情。我不鼓励上述任何方法,因为它们对我不起作用。我做了pow(64,1/3.)和pow(64,1/3.)但是我得到的答案是3
这是我的逻辑
事实上,这轮谈判必须让上述解决方案发挥作用
正确的解决方案是
ans=圆形(功率(n,1/3.) 这个问题的解决方案是
cube_root = pow(n,(float)1/3);
您应该#包括库文件
旧的C/C++标准不支持cbrt()函数。
当我们编写类似于cube\u root=pow(n,1/3)的代码时
编译器认为1/3=0
(C/C++中的除法问题),因此需要使用(float)1/3
进行类型转换以获得正确答案
#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;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
float n=64,立方根;
clrsc();
立方根=功率(n,(浮点数)1/3);
你的意思是立方根,而不是“根为3的平方根”。你可以使用pow(),幂为1/3-1:这个问题以前更好。现在很糟糕。“请引导我重载sqrt运算符”我们如何指导您创建SO问题?@C/C++中的Kotte 1/3是0,而不是三分之一。@LightnessRacesinOrbit我自己几乎将您的编辑回滚了。您的问题是一个非常不同的问题,尽管更合理。因为以前已经回答过,我相信它应该保持原样,并保持关闭。我的意思是Sqrt不是方形,例如Sqrt(4)=2;@HavaDarabi:我不明白。sqrt
代表“平方根”,不管你喜欢与否,还有sqrt(4)
是2
。请参阅-a基于pow的解决方案
找不到负数的立方根。最好参考C++11解决方案.Net:-1/+1@LightnessRacesinOrbit已修复!@RichardSitze:std::cbrt(-8)
导致-2
。这就是他们添加它的原因。@Hava:sqrt
不是“运算符”,并且您不能“过载”它用不同的参数来执行不同的事情。你的术语都是错误的。“哈瓦达巴里,不,你不需要这样做。例如,对于7的立方根,这个词会返回2.9129……而不是1.9129……这只是一个52.2%的Turbo C,不是C编译器,Turbo C++不是C++编译器。它们都是第一个C STAN的前。C++(C++)C++(98),它长时间不有效,C++或C++编译器都是无效的。Turbo C++比C++ 98年多,所以你的代码甚至不编译在C++编译器中(没有IoSurviv.h)。除了没有称为C/C++的语言外,它们是非常不同的语言,而且两种Turbo产品也不同。cbrt
是C++11中的一个新函数,所以即使是兼容的C++98编译器也不支持它,更不用说非C++编译器了。为什么使用float
除法,然后调用double
函数呢?我怀疑这很容易被忽略表示负数。
#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;
}