[解決済み] JavaScriptで正確な財務計算を。何が問題なのか?
2022-05-31 18:58:57
質問
クロスプラットフォームのコードを作成するために、私はJavaScriptで簡単な金融アプリケーションを開発したいと思っています。必要な計算は、複利と比較的長い小数点を含んでいます。この種の計算を行うために JavaScript を使用する際に避けるべき間違いを知りたいのですが、もしそれが可能であれば教えてください。
どのように解決するのですか?
小数の値を100で割って、すべての金額をセント単位で表すとよいでしょう。これは
浮動小数点数ロジックと算術の問題
. JavaScript には 10 進数のデータ型はなく、唯一の数値データ型は浮動小数点数です。そのため、一般的にお金を扱うときは
2550
の代わりに
25.50
ドルです。
JavaScriptで考えてみましょう。
var result = 1.0 + 2.0; // (result === 3.0) returns true
しかし
var result = 0.1 + 0.2; // (result === 0.3) returns false
式は
0.1 + 0.2 === 0.3
は
false
を返しますが、幸いなことに浮動小数点の整数演算は正確なので、10進表現の誤差は
1
.
実数の集合は無限ですが、JavaScript の浮動小数点フォーマットで正確に表現できるのはそのうちの有限個(正確には 18,437,736,874,454,810,627 個)だけであることに注意してください。したがって、他の数の表現は実際の数の近似値となります。 2 .
1
ダグラス・クロックフォード
JavaScript。良いところ
: 付録Aひどいところ (105ページ)
.
2
デビッド・フラナガン
JavaScript: 決定版ガイド、第4版
: 3.1.3 浮動小数点演算 (31 ページ)
.
関連
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] JavaScriptの「new」キーワードとは何ですか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
Vue+ElementUIによる大規模なフォームの処理例
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
jQueryのコピーオブジェクトの説明
-
vueにおけるfilterの適用シーンについて解説します。
-
Vueのフィルタの説明
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
jq は html ページとデータを動的に分割する。