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.5base3exp

请在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;
}