JavaScriptにおける誤差と数値操作

JavaScriptにおける誤差と数値操作

Number.EPSILON

Number.EPSILON は、JavaScriptにおける浮動小数点計算の精度を表す非常に小さい定数です。この値は、1と1より大きい次の数値との差を表します。 JavaScriptでの浮動小数点計算は、IEEE 754標準に基づいていますが、 この仕組み上、わずかな計算誤差が発生することがあります。Number.EPSILONを使うことで、計算の誤差を確認したり回避したりすることが可能です。

const a = 0.1 + 0.2; // 実際には0.30000000000000004になる
console.log(a === 0.3); // false

const isCloseEnough = Math.abs((0.1 + 0.2) - 0.3) < Number.EPSILON;
console.log(isCloseEnough); // true
    

Number.MIN_SAFE_INTEGER

Number.MIN_SAFE_INTEGER は、JavaScriptで安全に扱える最小の整数値を表します。この値は -9007199254740991 (-253 + 1) です。 JavaScriptの数値はすべて倍精度浮動小数点数として扱われるため、-9007199254740991より小さい整数では正確な計算が保証されません。

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

const x = Number.MIN_SAFE_INTEGER - 1;
console.log(x === Number.MIN_SAFE_INTEGER - 2); // true (正確な計算ができない)
    

Number.MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER は、JavaScriptで安全に扱える最大の整数値を表します。この値は 9007199254740991 (253 - 1) です。 これを超える整数では正確な計算が保証されません。

console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991

const y = Number.MAX_SAFE_INTEGER + 1;
console.log(y === Number.MAX_SAFE_INTEGER + 2); // true (正確な計算ができない)
    

Number.isSafeInteger(value)

Number.isSafeInteger(value) は、与えられた値が安全な整数(Number.MIN_SAFE_INTEGER から Number.MAX_SAFE_INTEGER の範囲内)かどうかを判定する関数です。 安全な整数とは、IEEE 754標準の制約内で正確に表現できる整数値を指します。

console.log(Number.isSafeInteger(123)); // true
console.log(Number.isSafeInteger(9007199254740991)); // true
console.log(Number.isSafeInteger(9007199254740992)); // false
console.log(Number.isSafeInteger(0.1)); // false
console.log(Number.isSafeInteger("123")); // false
    

まとめ

JavaScriptでは、浮動小数点計算の精度や整数の扱いにおいて注意が必要です。 数値計算に関連するこれらのツールを適切に使いこなすことで、より信頼性の高いプログラムを作成できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です