JavaScript BigInt

概要:このチュートリアルでは、253 – 1 より大きい整数を表すことができる組み込みオブジェクトであるBigInt型について学びます。

JavaScript BigInt の紹介

ES2020 では、253 - 1 より大きい整数を表すことができる BigInt という新しい組み込みオブジェクトが導入されました。

bigint は、numberstringsymbolbooleanundefinednull のようなプリミティブ型です。

BigInt を作成するには、数値リテラルの末尾に n を付加します。たとえば、

let bigInt = 9007199254740991n;Code language: JavaScript (javascript)

または、関数 BigInt() を呼び出すこともできます。

let bigInt = BigInt(9007199254740991);Code language: JavaScript (javascript)

Number を使用した次の計算例をご覧ください。

let x = Number.MAX_SAFE_INTEGER;
x = x + 1; // 9007199254740992
x = x + 1; // 9007199254740992 (same as above)Code language: JavaScript (javascript)

そして、BigInt を使用した計算例をご覧ください。

let x = BigInt(Number.MAX_SAFE_INTEGER);
x = x + 1; // 9007199254740992n
x = x + 1; // 9007199254740993n (correct now)Code language: JavaScript (javascript)

BigInt の型は bigint です。たとえば、

console.log(typeof bigInt); // bigint
console.log(typeof BigInt(100) === 'bigint'); // trueCode language: JavaScript (javascript)

演算子

BigInt は、+*-**%、ビット演算子 (>>> (ゼロ埋め右シフト) を除く) をサポートしています。一項演算子 (+) はサポートしていません。

/ 演算子も整数で動作します。ただし、結果は小数桁を返しません。たとえば、

let result = 3n / 2n;
console.log(result); // 1n, not 1.5nCode language: JavaScript (javascript)

比較

BigIntNumber と厳密には等しくありません (===)。

console.log(1n === 1); // falseCode language: JavaScript (javascript)

ただし、== 演算子を使用すると、BigInt は数値と緩やかに等しくなります。

console.log(1n == 1); // true    Code language: JavaScript (javascript)

<<=>>= を使用して、BigIntNumber を比較できます。

console.log(1n < 2); // true
console.log(2n > 1); // true
console.log(2n >= 2); // trueCode language: JavaScript (javascript)

条件

BigInt は、if 文や論理演算子 (||&&!) などの条件の中で、Boolean() 関数を介して Boolean に変換されます。言い換えれば、これらの場合は Number と同様に動作します。例えば、

let count = 0n;

if(count) {
    console.log(true);
} else {
    console.log(false);
}
Code language: JavaScript (javascript)

概要

  • BigInt は、JavaScript が number 型で確実に表現できる最大の数値である 253 - 1 よりも大きい整数を表すことができる新しいプリミティブ型です。
  • リテラル整数に n を付加するか、BigInt() 関数を使用して bigint を作成します。
このチュートリアルは役に立ちましたか?