什么是将数字提升到幂的C ++函数?

问题描述 投票:99回答:16

如何将数字提升到一个幂?

2^1

2^2

2^3

等等...

c++ math
16个回答
122
投票

在cmath库中的pow()。更多信息here。不要忘记将#include<cmath>放在文件的顶部。


4
投票
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)

您的原始问题标题具有误导性。要正方形,请使用2*2


4
投票

许多答案都提出了pow()或类似的替代方案或他们自己的实现。但是,考虑到你的问题中的例子(2^12^22^3),我猜你是否只需要将2提升到整数幂。如果是这种情况,我建议你使用1 << n用于2^n


4
投票

如果你只想处理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

3
投票

请注意,使用pow(x,y)的效率低于x*x*x y次,如图所示,并在此处回答https://stackoverflow.com/a/2940800/319728

因此,如果你想提高效率,请使用x*x*x


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

1
投票

我正在使用库cmathmath.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;
}

0
投票

首先添加qazxsw poi,然后你可以在代码中使用qazxsw poi方法,例如:

#include <cmath>

其中3.5是基数,3是exp


87
投票

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,因为它不知道它应该采用哪个floatdoublelong double版本,你会得到一个歧义错误。这三个都需要从int转换到浮点,这三个都是同样昂贵的!

因此,请务必键入第一个参数,以便它与这三个中的一个完美匹配。我通常使用double

pow(2.0, N)

一些律师再次对我说话。我自己经常陷入这个陷阱,所以我要警告你。


18
投票

在C ++中,“^”运算符是按位OR。它不适用于提升电力。 x << n是二进制数的左移,与x乘以2 n次相同,只能在将2加到幂时使用。 POW函数是一个通用的数学函数。


14
投票

使用pow(x,y)函数:See Here

只需包含math.h就可以了。


13
投票

你应该能够在数学中使用普通的C方法。

#include <cmath>

pow(2,3)

如果你是一个类似unix的系统,man cmath

这就是你问的问题吗?


11
投票

虽然pow( base, exp )是一个很好的建议,但要注意它通常在浮点运行。

这可能是你想要的也可能不是你想要的:在某些系统上,对于整数类型,累加器上的简单循环乘法会更快。

特别是对于方块,您可能只是将数字乘以自己,浮点或整数;它并不是真正降低可读性(恕我直言),而是避免了函数调用的性能开销。


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

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);
}

4
投票

它是<math.h>的战俘或战俘

没有像Visual Basic或Python那样的特殊中缀运算符

© www.soinside.com 2019 - 2024. All rights reserved.