如何将数字提升到一个幂?
2^1
2^2
2^3
等等...
在cmath库中的pow()。更多信息here。不要忘记将#include<cmath>
放在文件的顶部。
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)
您的原始问题标题具有误导性。要正方形,请使用2*2
。
许多答案都提出了pow()
或类似的替代方案或他们自己的实现。但是,考虑到你的问题中的例子(2^1
,2^2
和2^3
),我猜你是否只需要将2
提升到整数幂。如果是这种情况,我建议你使用1 << n
用于2^n
。
如果你只想处理base_2那么我建议使用左移运算符<<而不是数学库。
示例代码:
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
请注意,使用pow(x,y)
的效率低于x*x*x
y次,如图所示,并在此处回答https://stackoverflow.com/a/2940800/319728。
因此,如果你想提高效率,请使用x*x*x
。
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
我正在使用库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;
}
首先添加qazxsw poi,然后你可以在代码中使用qazxsw poi方法,例如:
#include <cmath>
其中3.5是基数,3是exp
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)
一些律师再次对我说话。我自己经常陷入这个陷阱,所以我要警告你。
在C ++中,“^”运算符是按位OR。它不适用于提升电力。 x << n是二进制数的左移,与x乘以2 n次相同,只能在将2加到幂时使用。 POW函数是一个通用的数学函数。
使用pow(x,y)函数:See Here
只需包含math.h就可以了。
你应该能够在数学中使用普通的C方法。
#include <cmath>
pow(2,3)
如果你是一个类似unix的系统,man cmath
这就是你问的问题吗?
脐
虽然pow( base, exp )
是一个很好的建议,但要注意它通常在浮点运行。
这可能是你想要的也可能不是你想要的:在某些系统上,对于整数类型,累加器上的简单循环乘法会更快。
特别是对于方块,您可能只是将数字乘以自己,浮点或整数;它并不是真正降低可读性(恕我直言),而是避免了函数调用的性能开销。
我没有足够的声誉来评论,但如果你喜欢使用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
#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);
}
它是<math.h>
的战俘或战俘
没有像Visual Basic或Python那样的特殊中缀运算符