JavaScriptで10進型として何を使用できますか?サポートされていません(0.1 + 0.2 !== 0.3
)、そして私は銀行/金融アプリケーションで正確な値を表すためにそれを必要としています。 JavaScriptの背後にある良い読み物と汚い詳細についてはJavaScriptの状態と未来を参照してください。 10進算術。
「10進数」とは、次のいずれかを意味します。
BigDecimal
など)、またはdecimal
など)。では、10進値を操作するためのライブラリまたはソリューションは何ですか?ありがとう!
多くの場合推奨されます1 お金をセント数を表す整数として処理するには:2572
ドルではなく25.72
セント。これは、あなたが言及した浮動小数点演算の問題を回避するためです。幸い、浮動小数点の整数演算は正確であるため、スケーリングによって小数表現エラーを回避できます。
1Douglas Crockford: JavaScript:良い部分:付録A-ひどい部分(105ページ) 。
Javascriptは浮動小数点をサポートしています。しかし、とにかく、財務記録の場合、最も単純な実装は、値を標準の整数で格納することです。金額をセントで表す整数を宣言するか、1つはドル用、もう1つはセント用の2つの整数を宣言できます。
したがって、18.57ドルは、最初の手法では1857セント、2番目の手法では18ドルと57セントになります。
これには、整数が純粋に一意のバイナリ表現として格納されるため、丸め誤差などが発生しないため、完全に正確であるという追加の利点があります。
次のライブラリはjs(ノードとブラウザ)に10進数を実装しているようです: https://npmjs.org/package/jsdecimal