C++ 什么是C++;函数将数字提升为幂?
如何将数字提升为幂C++ 什么是C++;函数将数字提升为幂?,c++,math,C++,Math,如何将数字提升为幂 2^1 2^2 2^3 等等。cmath库中的pow()。更多信息。 不要忘记将#include放在文件顶部。使用pow(x,y)功能: 只要包含math.h,您就可以了。在 没有像VisualBasic或Python中那样的特殊中缀运算符 pow(2.0,1.0) pow(2.0,2.0) pow(2.0,3.0) 你原来的题目有误导性。使用2*2你应该能够在数学中使用普通的C方法 #包括 pow(2,3) 如果您使用的是类unix系统,man cmath 这就是你
2^1
2^2
2^3
等等。cmath库中的pow()。更多信息。
不要忘记将#include
放在文件顶部。使用pow(x,y)功能:
只要包含math.h,您就可以了。在
没有像VisualBasic或Python中那样的特殊中缀运算符
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)
你原来的题目有误导性。使用2*2
你应该能够在数学中使用普通的C方法
#包括
pow(2,3)
如果您使用的是类unix系统,man cmath
这就是你要问的吗
Sujal虽然pow(base,exp)
是一个很好的建议,但要知道它通常在浮点运算中工作
这可能是您想要的,也可能不是您想要的:在某些系统上,对于整数类型,在累加器上进行简单的循环乘法会更快
具体来说,对于square,您可以自己将数字相乘,浮点或整数;这并不是真正的可读性降低(IMHO),您可以避免函数调用的性能开销。std::pow
标题中有以下重载:
pow(float, float);
pow(float, int);
pow(double, double); // taken over from C
pow(double, int);
pow(long double, long double);
pow(long double, int);
现在你不能这么做
pow(2, N)
N是一个int,因为它不知道它应该采用哪个float
,double
,或者long double
版本,所以会得到一个歧义错误。这三种方法都需要从int到浮点的转换,而且这三种方法的成本都是一样的
因此,请确保键入第一个参数,使其与这三个参数中的一个完全匹配。我通常使用double
pow(2.0, N)
又是我的律师废话。我自己也经常陷入这个陷阱,所以我要警告你
#include <iostream>
#include <conio.h>
using namespace std;
double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int)
void main()
{
double x; //initializing the variable x and i
int i;
cout<<"please enter the number";
cin>>x;
cout<<"plese enter the integer power that you want this number raised to";
cin>>i;
cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i);
}
#包括
使用名称空间std;
double raiseToPow(double,int)//接受参数(double,int)的double类型的raiseToPow变量
void main()
{
double x;//初始化变量x和i
int i;
coutx;
库蒂;
Cuth C++中的“^”运算符是位的,或者不用于提升幂。x我没有足够的评论来评论,但是如果你喜欢使用QT,他们有自己的版本。
#include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.
#包括
qPow(x,y);//返回提升到y次方的x。
或者,如果您不使用QT,cmath也有基本相同的功能
#include <cmath>
double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
pow(x, y); //Should return this: 78125
#包括
双x=5,y=7;//例如,5^7=78125
pow(x,y);//应该返回这个:78125
intpower(inti,intow)//仅适用于ow>=1
{//但不需要库!=)
如果(ow>1)
{
i=i*功率(i,ow-1);
}
返回i;
}
请注意,pow(x,y)
的使用效率低于x*x*x
y次,如图所示和回答
因此,如果要提高效率,请使用x*x*x
我正在使用库cmath
或math.h
,以便使用负责电源的pow()
库函数
#include<iostream>
#include<cmath>
int main()
{
double number,power, result;
cout<<"\nEnter the number to raise to power: ";
cin>>number;
cout<<"\nEnter the power to raise to: ";
cin>>power;
result = pow(number,power);
cout<<"\n"<< number <<"^"<< power<<" = "<< result;
return 0;
}
#包括
#包括
int main()
{
双数、幂、结果;
库特号码;
coutpower;
结果=功率(数量、功率);
许多答案都建议了pow()
或类似的替代方案或它们自己的实现。但是,给出了示例(2^1
,2^2
和2^3
)在你的问题中,我猜你是否只需要将2
提升为整数次幂。如果是这种情况,我建议你使用1如果你只想处理base\u 2,那么我建议使用左移位运算符首先添加\include
,然后
您可以在代码中使用pow
方法,例如:
pow(3.5, 3);
其中3.5是base和3是exp请在cmath、tgmath或math.h库中使用pow()函数
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl; // this calculates a^b
return 0;
}
现在,你的答案将是正确的。
此外,对于非常大的数字,将数据类型double更改为long int会丢失数据。
比如你写
long long int c=(long long int)(pow(a,b)+0.5);
并给出输入a=3和b=38
然后结果将是1350851717672992000,而正确的答案是1350851717672992089,这是因为pow()函数返回1.35085e+18,该值将提升为int,即1350851717672992000。我建议为此类场景编写自定义幂函数,如:-
long long int __pow (long long int a, long long int b)
{
long long int q=1;
for (long long int i=0;i<=b-1;i++)
{
q=q*a;
}
return q;
}
long-long-int\uu-pow(long-long-int-a,long-long-int-b)
{
长整型q=1;
对于(长整型i=0;i>a>>b;
长整型c=uuu-pow(a,b);
cout标题有误导性。这是关于一般的幂,而不仅仅是平方。我编辑并修复了它。如果它是关于一般的2的幂,请使用Yes,这将适用于整数…特别是有限域的整数。即使只有2^70也会溢出整数(但浮点可以精确表示),是的,这可能属于“过早优化”类,但我总是发现它是好的,特别是如果你必须在有限的资源环境中编程。PUFF()是一个C99函数,它不是C++的。<代码> int n;POW(2,N)< /C> >仍然是模糊的:<代码>可以是“PoW(double,int)”或“pWo(double,double)”< /> >:-/→ CasTI建议在添加评论之前阅读我的评论。-我解释说它确实含糊不清。(马尔文的VS2008编译器)@ Visual C++ 2010 Express对<代码> STD:没有问题。(PoW(2,3)< /COD>”@马尔文,因为随着时间的推移我变得越来越傲慢,我将再次回答:你没有说“被编译器拒绝的模棱两可……“但是你说…………仍然是模糊的……”,你没有提供备份。暗示编译器行为可能是一个备份,但是如果我从编译器(第一个原则)(C++本身)中独立地显示,这不是模糊的,我得到了更高的理由。
pow(3.5, 3);
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl; // this calculates a^b
return 0;
}
int c=(int)(pow(a,b)+0.5)
long long int c=(long long int)(pow(a,b)+0.5);
long long int __pow (long long int a, long long int b)
{
long long int q=1;
for (long long int i=0;i<=b-1;i++)
{
q=q*a;
}
return q;
}
int main()
{
long long int a,b;
cin >> a >> b;
long long int c=__pow(a,b);
cout << c << endl;
return 0;
}