JavaScriptの小数の足し算の問題 [重複]。
2023-10-13 08:46:23
質問
ということで、2つの数字(10進数)を足し算するスクリプトを作っているのですが、問題が発生しました。
http://jsfiddle.net/DerekL/esqnC/
スクリプトを作ってみた、なかなかいい感じに仕上がった。
0.1 + 0.5 //0.6
0.2 + 0.3 //0.5
しかし、すぐに私は参照してください。
0.1 + 0.2 //0.30000000000000004
0.01 + 0.06 //0.06999999999999999
と、私には正しく見えません。有限ビットの浮動小数点を使っている欠点であることは分かっているのですが、それを修正する方法が見付からないのです。
Math.ceil //No
Math.floor //No
.slice //No
アップデイト
まず1000倍して、足してから1000で割ることは可能でしょうか?
どのように解決するのですか?
使用方法
toFixed
を使って、小数点以下の桁数を削った文字列に変換し、それを数値に戻してください。
+(0.1 + 0.2).toFixed(12) // 0.3
見た目はIEの
toFixed
の挙動がおかしいようなので、IEをサポートする必要がある場合は、このようなものが良いかもしれません。
Math.round((0.1 + 0.2) * 1e12) / 1e12
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】JavaScriptで10進数を検証する - IsNumeric()
-
[解決済み】オブジェクトからプロパティを削除する(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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行