1. ホーム
  2. javascript

[解決済み] 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.3false を返しますが、幸いなことに浮動小数点の整数演算は正確なので、10進表現の誤差は 1 .

実数の集合は無限ですが、JavaScript の浮動小数点フォーマットで正確に表現できるのはそのうちの有限個(正確には 18,437,736,874,454,810,627 個)だけであることに注意してください。したがって、他の数の表現は実際の数の近似値となります。 2 .


1 ダグラス・クロックフォード JavaScript。良いところ : 付録Aひどいところ (105ページ) .

2 デビッド・フラナガン JavaScript: 決定版ガイド、第4版 : 3.1.3 浮動小数点演算 (31 ページ) .