数値を累乗するにはどうすればよいですか?
2^1
2^2
2^3
等...
cmathライブラリーのpow()。詳細 こちら 。ファイルの先頭に#include<cmath>
を置くことを忘れないでください。
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
のどのバージョンを使用すべきかわからないため、あいまいなエラーが発生するためです。 3つすべてがintから浮動小数点への変換を必要とし、3つとも同じようにコストがかかります!
したがって、必ず最初の引数を入力して、これら3つの引数のいずれかに完全に一致するようにしてください。私は通常double
を使用します
pow(2.0, N)
私からのいくつかの弁護士が再びがらくた。私はしばしば自分自身でこの落とし穴に落ちたので、それについてあなたに警告します。
C++では、「^」演算子はビット単位のORです。権力を上げるためには機能しません。 x << nは2進数の左シフトです。これは、xに2 nを掛けるのと同じであり、2を累乗するときにのみ使用できます。 POW関数は、一般的に機能する数学関数です。
Pow(x、y)関数を使用します。 こちらを参照
Math.hをインクルードするだけで設定は完了です。
数学で通常のCメソッドを使用できるはずです。
#include <cmath>
pow(2,3)
uNIXのようなシステムを使用している場合は、man cmath
それはあなたが求めていることですか?
スジャール
pow( base, exp )
は優れた提案ですが、通常は浮動小数点で動作することに注意してください。
これはあなたが望むものかもしれませんし、そうでないかもしれません:いくつかのシステムでは、アキュムレータでの単純なループ乗算は整数型の方が速くなります。
また、特に正方形の場合は、浮動小数点または整数で数値を乗算するだけですみます。実際には読みやすさ(IMHO)の低下ではなく、関数呼び出しのパフォーマンスオーバーヘッドを回避できます。
コメントするほどの評判はありませんが、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>
のpowまたはpowf
Visual BasicやPythonのような特別な中置演算子はありません
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)
元の質問のタイトルは誤解を招くものです。 squareにするには、2*2
を使用します。
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()
または同様の代替案または独自の実装を提案しています。ただし、質問の例(2^1
、2^2
、および2^3
)を考えると、2
を整数乗するだけでよいかどうかを推測できます。この場合、1 << n
に2^n
を使用することをお勧めします。
ここに示され、回答されているように、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
権限を管理する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;
}
最初に#include <cmath>
を追加してから、たとえばコードでpow
methodeを使用できます。
Pow(3.5, 3);
.5はbaseであり、3はexp