1. ホーム
  2. javascript

[解決済み] Number.EPSILONの利用シーンはどのようなものがありますか?

2022-02-17 21:07:44

質問事項

MZOでJavaScriptのドキュメントを見たのですが、この部分を読みました。

<ブロッククオート

Number.EPSILONプロパティは、1と1より大きい最小の浮動小数点数との差を表します。

また、こんな例も載っていました。

var result = Math.abs(0.2 - 0.3 + 0.1);

console.log(result);
// expected output: 2.7755575615628914e-17

console.log(result < Number.EPSILON);// expected output: true

2つの浮動小数点数の差を見るためにこの関数を使えることはわかったが、Webサイトでの使い道がわからない。

どのように解決するのですか?

この例からわかるように、浮動小数点数の(近似的な)等質性を検定するのに使うことができます。通常の数学では、次のように期待します。 0.2 - 0.3 + 0.1 と等しくなるように、正確な 0 しかし、Javascriptでは、浮動小数点数の実装の関係で、そうではありません。例えば、3つの変数があり、そのうちの2つを足したものが3つ目と等しいかどうかを調べたいとします。浮動小数点数であれば、単純に a + b === c - その代わりに、それらの差が Number.EPSILON :

const a = 0.1;
const b = 0.2;
const c = 0.3;

// Need to verify whether a + b = c
// Won't work:
console.log(a + b === c);

// Will work:
console.log(Math.abs(a + b - c) < Number.EPSILON);

浮動小数点演算の足し算も、データの検証も、それほど珍しいことではありません。