javascript 正確に取り扱える最大・最小の整数値を取得する

javascript 正確に取り扱える最大・最小の整数値を取得する

javascriptで正確に取り扱える最大・最小の整数値を取得する手順を記述してます。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 106.0.5249.103

正確に取り扱える最大・最小の整数値を取得

最大・最小の整数値を取得するには「Number.MAX_SAFE_INTEGER」と「Number.MIN_SAFE_INTEGER」を使用します。

console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991

console.log(Number.MIN_SAFE_INTEGER) // -9007199254740991

これらは「53bit(2の53乗) – 1」と、それをマイナスにしたものと同じとなります。

console.log(Math.pow( 2, 53 ) - 1) // 9007199254740991

console.log( -(Math.pow( 2, 53 ) - 1) ) // -9007199254740991

console.log( Number.MAX_SAFE_INTEGER === Math.pow( 2, 53 ) - 1 ); // true

この範囲を超えてしまうと、以下のように正確な結果が得られないので注意が必要です。

console.log( Number.MAX_SAFE_INTEGER + 1 === Math.pow( 2, 53 ) - 1 + 2 ); // true

console.log( (9007199254740991 + 1) === (9007199254740991 + 2) ) // ture

console.log( 9007199254740992 + 1 ) // 9007199254740992