長整数リテラルの記述方法

長整数型の値をプログラムの中で使用するには、長整数の値である長整数リテラルをそのまま記述します。ここでは JavaScript における長整数リテラルの記述方法について解説します。

(Last modified: )

長整数リテラル

プログラムの中で長整数の値を記述するときに使用するのが長整数リテラルです。長整数リテラルを記述する場合は、数値を記述したあと最後に n を記述してください。

let num = 854n;

数値の場合と同じように 10 進数以外に 16 進数、 8 進数、 2 進数で記述することができます。

let num1 = 0xB6n;        // 16 進数では先頭に 0x を付ける
let num2 = 0o266n;       // 8 進数では先頭に 0o を付ける
let num3 = 0b10110110n;  // 2 進数では先頭に 0b を付ける

長整数は整数のみなので、小数点を持つ値を記述することはできません。エラーが発生します。

let num = 7.34n;
>> Uncaught SyntaxError: Invalid or unexpected token

また次のように BigInt オブジェクトのコンストラクタを使って長整数リテラルを作成することもできます。

let num = BigInt(1024);
console.log(num);
>> 1024n

長整数で表すことができる整数

数値リテラルで安全に表すことができる最大の数値は 253-1 (=9007199254740991) でこの値は Number.MAX_SAFE_INTEGER として定義されています。

この数値を超える値に対して演算を行うと、誤った結果となる場合があります。次のサンプルをみてください。

let num = Number.MAX_SAFE_INTEGER;

console.log(num);
>> 9007199254740991

console.log(num + 1);
>> 9007199254740992

console.log(num + 2);
>> 9007199254740992

Number.MAX_SAFE_INTEGER + 2 = 9007199254740993 となるはずですが、演算結果は 9007199254740992 となっています。このように数値リテラルでは Number.MAX_SAFE_INTEGER を超える数値は安全に扱うこtができません。

それに対して長整数リテラルは任意の精度で数値を扱うことができるので、整数リテラルで安全に扱える数値を超える数値であっても安全に使用することができます。次のサンプルをみてください。

let num = 9007199254740991n;

console.log(num);
>> 9007199254740991n

console.log(num + 1n);
>> 9007199254740992n

console.log(num + 2n);
>> 9007199254740993n

数値リテラルの時には間違った結果となった演算も長整数リテラルであれば正しい結果を取得することができます。

-- --

JavaScript における長整数リテラルの記述方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。