javascript BigIntを使用する

javascript BigIntを使用する

javascriptでは、Number型は53bit(2の53乗)までの値しか取り扱いできないため、それ以上の数値を扱う場合は、BigIntを使用します。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 103.0.5060.114

BigInt使い方

BigIntを使用すると、53bit(2の53乗)である「 9007199254740992 」より大きな値を扱うことが可能です。

console.log(2 ** 53) // 乗演算子で2の53乗
// 9007199254740992

console.log(2 ** 53 + 1) ← 扱うことができない
// 9007199254740992

BigIntを使用するには、数値の後ろに「n」を付ける必要があります。

console.log(2n ** 53n + 1n)
// 9007199254740993n

もしくは「BigInt()」を使用します。

console.log( BigInt(2 ** 53) + BigInt(1) )
// 9007199254740993n

「BigInt()」だと文字列の数値にも使用できます。

console.log( BigInt('9007199254740992') + BigInt(1) )
// 9007199254740993n

2進数などにも使用できます。

console.log( 0b100000000000000000000000000000000000000000000000000001n )
// 9007199254740993n

演算

BigIntはBigInt同士でないと、使用できません。

console.log(2n ** 53n + 1)
// Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions

また少数に使用することもできません。

let num = 1.2n // Uncaught SyntaxError: Invalid or unexpected token

なので、割り算で少数になる場合は丸められます。

console.log(3n / 2n); // 1n 

console.log(5n / 2n); // 2n 

console.log(8n / 3n); // 2n 

console.log(1n / 3n); // 0n 

型は「BigInt」となります。

console.log(typeof 10n); // bigint
console.log(typeof BigInt(10)); // bigint

エラーの出るブラウザ

BigIntは、Microsoft Edge( 42.17134.1098.0 ) だとエラーとなります。