0

2 つの浮動小数点値を比較するためのより良いアプローチは何でしょうか? Epsilon または Big Decimal とスケーリングの比較を使用しますか?

たとえば、データの範囲は 0.00 ~ 49,999.99?

4

2 に答える 2

1

また、通貨を処理する場合、ドルではなくセントを表す整数を単純に格納できない理由はないので、事実上固定小数点表現が得られます。たとえば、$4.09 は 409 として保存されます。(10 分の 1 セント、つまり4090 またはその他の一定の小数精度を格納することも選択できます。) 精度を失うことなく、無限回加算および減算することができます。

利息などの計算では、浮動小数点数を使用して計算を実行し、格納する前に必要な精度に単純に丸めます。利息の計算自体は必要な精度を持ち、各期間で一貫して同じ小数点以下の桁数に四捨五入されます。これは通常、財務計算で必要とされるものです (私は、$0.00001 から $0.00001 を追跡したい機関を見たことがありません)。ある支払い期間から次の支払い期間まで -- 法的な理由から、彼らは帳簿を指定された精度に丸めます。)

セントを格納する通常の signed intでは、最大 $21,474,836.47 を表すことができます。longを使用して$92,233,720,368,547,758.07 を格納できます。1,000 兆を超える通貨単位 (米国の予算を Zim ドルで表しますか?) を処理するには、BigDecimal を使用します。

浮動小数点比較の詳細については、こちらをご覧ください: すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと

于 2009-01-12T07:52:39.117 に答える