BigInt

BigInt プリミティブは、JavaScript に比較的新しく追加されたプリミティブであり、Number で許可されている範囲外の数値に対して数学演算を行うことができます。BigInt を作成するには、数値リテラルの末尾に n を追加するか、整数または数値の文字列値を BigInt() 関数に渡します。

const myNumber = 9999999999999999;
const myBigInt = 9999999999999999n;

typeof myNumber;
> "number"

typeof myBigInt;
> "bigint"

myNumber;
> 10000000000000000

myBigInt;
> 9999999999999999n

この例では、9999999999999999Number で安全に表現できる桁数の範囲外であるため、丸めエラーが発生します。

BigInt 値は、Number オブジェクトが提供するメソッドとプロパティを継承しません。また、JavaScript の組み込み Math オブジェクトが提供するメソッドでは使用できません。最も重要な点は、BigInt プリミティブと Number プリミティブを標準の算術演算に混在させることができないことです。

9999999999999999n + 5
> Uncaught TypeError: can't convert BigInt to number

BigInts で算術を行うには、両方のオペランドを BigInt 値として定義する必要があります。

console.log( 9999999999999999 + 10 );  // Off by one
> 10000000000000010

console.log( 9999999999999999n + 10n );
> 10000000000000009n