【JavaScript】 べき乗(同じ数を累乗する)の演算子
更新日:2021/09/16
54は5を4回掛け算したもので、累乗とよびます。
そして4回の部分が、マイナスや分数など自然数以外にも範囲を広げたものをべき乗と呼ぶそうです。
累乗なら繰り返し掛け算すれば計算できますが、べき乗は難しそうです。
そこで、JavaScriptでべき乗を計算する方法をお伝えします。
ES2016以前
元々JavaScriptにはMath.pow()が用意されていて、これを使用するとべき乗計算ができます。
Math.powの構文
aをb回かけ合わせる
Math.pow( a , b )
Math.pow( 5 , 3 ) →125 Math.pow( 5 , -3 ) →0.008 Math.pow( 2 , 0.5 ) →1.4142135623730951
べき乗演算子
古いバージョンのJavaScriptでは存在していませんでしたが、現在ではべき乗をおこなう演算子が導入されています。
べき乗演算子
** (アスタリスク2つ)
5 ** 3 →125 5 ** -3 →0.008 2 ** 0.5 →1.4142135623730951
このべき乗演算子は、 - の扱いが難しいです。
次の例を実行すると、エラーになります。
エラー例
const n = 5;
console.log( -n ** 4 );
// SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'
console.log( -5 ** 4 );
// SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'
エラー内容を翻訳すると、次のようになります。
「括弧で囲まれていない単項式は、「**」の左側には表示できません。」
どうやら右側の数値は、 - を付けてもいいようです。
これはOK
console.log( 5 ** -4 ); // 0.0016
演算子の優先順位は、-の方が高いです。
そのため-5を4回掛け算するように解釈されるべきです。
しかし他の言語で優先順位が異なるものがあるようです。
そのためプログラム作成者の意図が、左側の数値に適用するのか、それともべき乗結果に適用するのかあいまいになるため、制限されているようです。
そういうものだと思って、( )で優先順位を明確にしてあげましょう。
これはOK
console.log( (-5) ** 4 ); // 625 ← - 5 を 4回かける
console.log( - ( 5 ** 4 ) ); // -625 ← 5 を 4回かけた後、-を適用
■実際には - だけでなく、 + 、 ~ 、 ! 、delete 、void 、typeof などの単項演算子も制限されます。
更新日:2021/09/16
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。