[解決済み] 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);
浮動小数点演算の足し算も、データの検証も、それほど珍しいことではありません。
関連
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] JavaScriptの「new」キーワードとは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] モバイル端末の検出にはどのような方法がありますか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パッシブイベントリスナー内部でpreventDefaultができない
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み] テスト
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー