HOWTO · JavaScript

JavaScript で数値を二乗する

このチュートリアルでは、JavaScript で数値を二乗する方法について説明します

このページの内容

JavaScriptで値を二乗するには、number ** 2 のように2乗します。たとえば、5 ** 2 は 25 と評価されます。一般的な Number の値には、この方法が最も分かりやすいでしょう。乗算や Math.pow() も使えます。

JavaScript で Number を二乗する

二乗とは、ある値に同じ値を掛けることです。日常的な計算では、JavaScript の Number 型が、整数にも小数にも一般的に使われます。次の単独の例では、式を直接記述し、その結果をログに出力します。

このセクションのコードと表示されるラベルや出力は英語のままです。

const number = 5;
console.log(number ** 2);

** の後ろに置く値が指数です。二乗には 2、三乗には 3 を使い、それ以外の累乗には目的に応じた指数を指定します。この演算は負の値や小数の Number にも使えます。たとえば、負の値を二乗すると負でない結果になります。JavaScript の数値は浮動小数点演算を使うため、非常に大きな値や高い精度が必要な小数では、数学上の桁をすべて保持できないことがあります。

べき乗演算子を使う

** はメソッドではなく、べき乗演算子です。左側のオペランドが底、右側が指数なので、base ** 2 と書けば二乗を直接表せます。変数の場合も、ほかの計算と同じように式を代入します。

このセクションのコードと表示されるラベルや出力は英語のままです。

const base = 8;
const squared = base ** 2;
console.log(squared);

負の値をリテラルとして書く場合は、底を括弧で囲みます。(-3) ** 2 はマイナス3を二乗します。括弧がないと単項マイナスとべき乗の結び付き方が異なり、-3 ** 2 は構文エラーになります。値がすでに変数に格納されていれば、value ** 2 に追加の括弧は必要ありません。

乗算または Math.pow() を使う

値に同じ値を掛けて二乗することもできます。演算を明示する書き方として読みやすく、** を使えば指数が見て分かります。従来からある組み込みの Math.pow(base, exponent) 関数も、同じ底と指数の関係を表します。この書き方を採用しているコードでは、引き続き便利です。

このセクションのコードと表示されるラベルや出力は英語のままです。

const number = 5;
const byMultiplication = number * number;
const byMathPow = Math.pow(number, 2);
console.log(byMultiplication, byMathPow);

一般的な Number の入力では、3つの書き方はいずれも JavaScript の浮動小数点数表現を使って累乗を計算します。周囲のコードに合った表記を選んでください。どの方法も、任意精度の正確な小数計算を実現するものではありません。

二乗処理を再利用可能な関数にまとめる

同じ処理を複数箇所で使う場合は、関数にまとめます。名前付き関数は再利用できる宣言を用意するときに便利です。アロー関数は、コールバックなどにも使える簡潔な選択肢です。次の例では、それぞれの形式を定義して呼び出します。

このセクションのコードと表示されるラベルや出力は英語のままです。

function squareNumber(value) {
  return value ** 2;
}

console.log(squareNumber(6));
const square = (value) => value ** 2;
console.log(square(6));

どちらの関数も値を1つ受け取り、その二乗を返します。入力の検証や変換は行わないため、呼び出し側で意図した数値として扱える値を渡してください。たとえば、文字列を暗黙に変換してから乗算すると、予想外の結果になることがあります。必要に応じて、外部入力を変換して検証してから関数に渡してください。

整数の正確な精度が必要な場合は BigInt の値を二乗する

JavaScript の Number で整数を正確に表せるのは、Number.MAX_SAFE_INTEGER(9,007,199,254,740,991)までです。この範囲を超えても整数演算の正確さを保つ必要がある場合は、最初から BigInt を使います。整数リテラルの末尾に n を付け、同じべき乗演算子を使います。

このセクションのコードと表示されるラベルや出力は英語のままです。

const largeInteger = 9007199254740993n;
const squared = largeInteger ** 2n;
console.log(squared);

BigInt の指数も BigInt でなければならないため、例では 2n を使っています。BigInt が扱えるのは整数で、小数は扱えません。JavaScript では、算術演算で BigInt と Number のオペランドを混在させることはできません。必要に応じて意図的に変換してください。また、すでに精度を失った Number を変換しても、失われた桁は復元できません。通常の数値計算には Number を使い、大きな整数を正確に計算する必要がある場合は BigInt を使います。