[解決済み] JavaScriptで浮動小数点数の精度を扱うには?
2022-03-14 01:03:34
質問
以下のようなダミーテストスクリプトがあります。
function test() {
var x = 0.1 * 0.2;
document.write(x);
}
test();
これは、結果を印刷します
0.020000000000000004
と表示されるはずですが
0.02
(電卓を使う場合)。私が理解した限りでは、これは浮動小数点数の乗算精度のエラーによるものです。
このような場合、正しい結果が得られるような良い解決策をお持ちの方はいらっしゃいますか?
0.02
? のような関数があることは知っています。
toFixed
とか丸めもありですが、本当に切ったり丸めたりせずに全部の数字を印刷したいのです。どなたか素敵でエレガントな解決策をお持ちの方がいらっしゃいましたら教えてください。
もちろん、そうでない場合は10桁程度に丸めますよ。
解き方は?
からの 浮動小数点演算ガイド :
この問題を回避するためには、どうしたらよいでしょうか?
それは、どのような を計算します。
- 特に、計算結果を正確に足し算する必要がある場合。 金銭を扱う場合は、特殊な小数点を使用します。 のデータ型を使用します。
- 小数点以下の桁数を表示したくない場合は、単純に を丸めた結果をフォーマットする。 小数点以下の桁数 を表示させます。
- 10進データ型がない場合、代替案として 整数を使用します。 の計算はすべてセントで行われます。しかし これはより多くの作業を必要とし、いくつかの問題があります。 の欠点があります。
最初の点は、本当に特定の正確さが必要な場合にのみ適用されることに注意してください。 10進数 の動作になります。ほとんどの人はそんなことは必要なく、1/10のような数字でプログラムが正しく動作しないことに苛立っているだけで、1/3で同じエラーが発生しても瞬きもしないことに気づいていないのです。
最初の点が本当に当てはまるのであれば BigDecimal for JavaScript これはエレガントではありませんが、不完全な回避策を提供するのではなく、実際に問題を解決しています。
関連
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vueが定義するプライベートフィルタと基本的な使い方
-
Vueのクラススタイルの使い方の詳細
-
Vueでルートネスティングを実装する例
-
Vueの「データを聴く」原則を解説
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
[解決済み] Javascriptでfloatの精度を扱う [重複] [重複