如何将数字提升到某个数字?
2^1
2^2
2^3
等...
答案 0 :(得分:119)
在cmath库中的pow()。更多信息here。 不要忘记将#include放在顶部。
答案 1 :(得分:84)
std::pow
标头中的 <cmath>
包含以下重载:
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)
有些律师废话了我。我自己经常陷入这个陷阱,所以我要警告你。
答案 2 :(得分:17)
在C ++中&#34; ^&#34;运算符是按位OR。它不适用于提升电力。 x <&lt;&lt; n是二进制数的左移,与x乘以2 n次相同,只能在将2加到幂时使用。 POW函数是一个通用的数学函数。
答案 3 :(得分:14)
使用pow(x,y)函数:See Here
只需包含math.h就可以了。
答案 4 :(得分:13)
你应该能够在数学中使用普通的C语法。
#include <cmath>
pow(2,3)
如果您使用的是类似unix的系统man cmath
这就是你问的问题吗?
Sujal
答案 5 :(得分:11)
虽然pow( base, exp )
是一个很好的建议,但要注意它通常在浮点运行。
这可能是您想要的也可能不是:在某些系统上,对于整数类型,累加器上的简单循环乘法会更快。
对于square来说,你也可以自己将数字乘以浮点或整数;它并不是真正降低可读性(恕我直言),而是避免了函数调用的性能开销。
答案 6 :(得分:9)
我没有足够的声誉来评论,但如果您喜欢使用QT,他们就有自己的版本。
#include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.
或者如果你没有使用QT,cmath基本上都是一样的。
#include <cmath>
double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
pow(x, y); //Should return this: 78125
答案 7 :(得分:6)
#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);
}
//函数raiseToPower的定义
double raiseToPow(double x, int power)
{
double result;
int i;
result =1.0;
for (i=1, i<=power;i++)
{
result = result*x;
}
return(result);
}
答案 8 :(得分:4)
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)
您的原始问题标题具有误导性。要 square ,请使用2*2
。
答案 9 :(得分:4)
<math.h>
没有像Visual Basic或Python中那样的特殊中缀运算符
答案 10 :(得分:3)
请注意,使用pow(x,y)
效率低于x*x*x
次,如图所示,并在此处回答https://stackoverflow.com/a/2940800/319728。
因此,如果您希望提高效率x*x*x
。
答案 11 :(得分:3)
许多答案都建议使用pow()
或类似的替代方法或自己的实现。但是,考虑到您的问题中的示例(2^1
,2^2
和2^3
),我想您是否仅需要将2
提升为整数幂。如果是这种情况,我建议您将1 << n
用于2^n
。
答案 12 :(得分:3)
如果您只想处理 base_2 ,那么我建议使用左移运算符 <<< / em> 代替数学库。
示例代码:
int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}
示例输出:
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
答案 13 :(得分:1)
int power (int i, int ow) // works only for ow >= 1
{ // but does not require <cmath> library!=)
if (ow > 1)
{
i = i * power (i, ow - 1);
}
return i;
}
cout << power(6,7); //you can enter variables here
答案 14 :(得分:1)
我正在使用图书馆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;
}
答案 15 :(得分:1)
在cmath,tgmath或math.h库中使用pow()函数。
&&
请注意,如果您以长整型以外的任何数据类型来输入功率,则答案将提升为双精度。也就是说,它将接受输入,并将输出加倍。对于long double输入,返回类型为long double。用于将答案更改为int使用, int c =(int)pow(a,b)
但是,请记住某些数字,这可能导致数字小于正确答案。因此,例如,您必须计算5 ^ 2,则在某些编译器上,答案可以返回为24.99999999999。将数据类型更改为int时,正确答案将是24,而不是25。所以,这样做
#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 long int会丢失数据。 例如你写
int c=(int)(pow(a,b)+0.5)
并给定输入a = 3和b = 38 那么结果将是1350851717672992000,而正确答案是1350851717672992089,这是因为pow()函数返回1.35085e + 18,其提升为int的形式是1350851717672992000。我建议针对此类情况编写自定义幂函数,例如:-
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;
}
对于大于long long int范围的数字,请使用boost库或字符串。
答案 16 :(得分:0)
首先添加#include <cmath>
,然后添加
您可以在代码中使用 pow
方法,例如:
Pow(3.5, 3);
3.5 是 base , 3 是 exp < / strong>