web-dev-qa-db-ja.com

数値を累乗するC ++関数とは何ですか?

数値を累乗するにはどうすればよいですか?

2^1

2^2

2^3

等...

100
user98188

cmathライブラリーのpow()。詳細 こちら 。ファイルの先頭に#include<cmath>を置くことを忘れないでください。

122
Joey Robert

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のどのバージョンを使用すべきかわからないため、あいまいなエラーが発生するためです。 3つすべてがintから浮動小数点への変換を必要とし、3つとも同じようにコストがかかります!

したがって、必ず最初の引数を入力して、これら3つの引数のいずれかに完全に一致するようにしてください。私は通常doubleを使用します

pow(2.0, N)

私からのいくつかの弁護士が再びがらくた。私はしばしば自分自身でこの落とし穴に落ちたので、それについてあなたに警告します。

C++では、「^」演算子はビット単位のORです。権力を上げるためには機能しません。 x << nは2進数の左シフトです。これは、xに2 nを掛けるのと同じであり、2を累乗するときにのみ使用できます。 POW関数は、一般的に機能する数学関数です。

18
Cindy

Pow(x、y)関数を使用します。 こちらを参照

Math.hをインクルードするだけで設定は完了です。

14
Adam Haile

数学で通常のCメソッドを使用できるはずです。

#include <cmath>

pow(2,3)

uNIXのようなシステムを使用している場合は、man cmath

それはあなたが求めていることですか?

スジャール

13
sujal

pow( base, exp )は優れた提案ですが、通常は浮動小数点で動作することに注意してください。

これはあなたが望むものかもしれませんし、そうでないかもしれません:いくつかのシステムでは、アキュムレータでの単純なループ乗算は整数型の方が速くなります。

また、特に正方形の場合は、浮動小数点または整数で数値を乗算するだけですみます。実際には読みやすさ(IMHO)の低下ではなく、関数呼び出しのパフォーマンスオーバーヘッドを回避できます。

11
leander

コメントするほどの評判はありませんが、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
9
Agricola
#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);
}
6
Filza Naser

<math.h>のpowまたはpowf

Visual BasicやPythonのような特別な中置演算子はありません

4
Dario
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)

元の質問のタイトルは誤解を招くものです。 squareにするには、2*2を使用します。

4
Zifre

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
4
HaSeeB MiR

多くの回答がpow()または同様の代替案または独自の実装を提案しています。ただし、質問の例(2^12^2、および2^3)を考えると、2を整数乗するだけでよいかどうかを推測できます。この場合、1 << n2^nを使用することをお勧めします。

4
Jianchao Li

ここに示され、回答されているように、pow(x,y)の使用はx*x*x y回よりも効率が悪いことに注意してください https://stackoverflow.com/a/2940800/319728

したがって、効率化を図る場合は、x*x*xを使用してください。

3
aquraishi
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
Viktor

権限を管理するpow()ライブラリ関数を使用するために、ライブラリcmathまたはmath.hを使用しています

#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;
}
1
user8857051

最初に#include <cmath>を追加してから、たとえばコードでpow methodeを使用できます。

Pow(3.5, 3);

.5baseであり、3exp

0
Mohammad Ansari