7

人々が金融アプリケーションに double ではなく decimal を使用しているかどうかを確認したかったのです。意図しない結果をもたらす double をあちこちで使用している人をたくさん見てきました。.

他の人がこの間違いをしているのを見ますか? . .

4

7 に答える 7

8

残念ながらやりましたが、後悔しています。すべてのdoubleを10進数に変更する必要がありました。小数は金融アプリケーションに適しています。この記事を見ることができます CLRのお金の種類

算術演算、通貨タイプ、フォーマット、および慎重な分配と丸めを損失なく処理する、CLR用の便利で高性能なマネー構造。

于 2008-10-24T04:01:27.210 に答える
5

はい、floatまたはdouble財務のために使用することはよくある間違いであり、多くの、多くの苦痛につながります。decimalこのシナリオで最も明白な選択です。

一般的な知識として、それぞれの良い議論はここ(float / double)とここ(decimal)にあります。

于 2008-10-24T04:03:41.447 に答える
2

これはあなたが思うほど明白ではありません。私は最近、大企業の管理者に、財務レポートをExcelが生成するものと一致させたいと言ってもらいました。これは、計算結果を内部で最高の精度で維持し、表示目的で最後の最後に丸めるだけです。これは、表示された値のみを使用した手動計算では、Excelの回答を常に一致させることができないことを意味します。彼の説明によると、結果を生成するためのアルゴリズムは複数あり、それぞれが10進値を使用して異なる場所で丸めを行うため、矛盾する回答が生成される可能性がありますが、Excelメソッドは常に同じ回答を生成しました。

個人的には彼は間違っていると思いますが、Excelを財務計算に適切に使用する方法を理解していない金融関係者が非常に多いため、このコントローラーに同意する人は多いと思います。

私は宗教戦争を始めたくありませんが、これについて他の意見を聞きたいです。

于 2008-10-24T04:27:59.170 に答える
1

「科学的」測定 (つまり、重量、長さ、面積など) の場合は、2 倍を使用します。

財務上のもの、または法律に関係するもの (不動産の面積など) の場合は、10 進数を使用します。

難しい部分は丸みを帯びています。

税金が 2.4% の場合、詳細で四捨五入しますか、それとも合計の後で四捨五入しますか?

ほとんどの場合、両方を実行する必要があります (および差分を修正します)。

于 2008-10-24T04:50:55.207 に答える
1

私はこれに数回遭遇しました。多くの言語にはこの種のものは何も組み込まれておらず、問題を理解していない人にとっては、特にそれがなくても意図したとおりに機能するように見える場合は、別の面倒なことのように思えます。

于 2009-04-17T22:43:07.127 に答える
0

私はいつもDecimalを使用してきました。少なくとも私がそれをサポートする言語を持っていたとき。そうしないと、丸め誤差が発生します。

于 2008-10-24T04:02:29.657 に答える
0

上記の浮動小数点と 10 進数の正確性の問題については完全に同意しますが、多くの金融アプリケーションはパフォーマンスが重要です。

このような場合、ハードウェアで 10 進数型がサポートされていないシステムでは、10 進数がパフォーマンスに大きな影響を与えるため、float/double の使用を検討します。さらに、ドメイン モデルを表し、すべての丸めロジックとこれらの型の有効な演算子をカプセル化する、より高いレベルのクラス (税、手数料、残高、配当、見積もり、ティックなど) で浮動小数点型をラップすることも可能です。とその相互作用。はい - 一部のプロジェクトでは、.NET または win32 メソッドと比較して最大 20% 以上の計算を絞り込むカスタム丸め関数を実装しました。

考慮すべきもう 1 つのことは、オブジェクトをプロセス外に渡すかどうかです。通常は 4 つの整数である 10 進数をシリアル化してネットワーク経由で渡すと、CPU の負荷が高くなり (サポートされていない場合は特に)、帯域幅とメモリ フットプリントが大幅に増加します。

于 2011-05-16T20:53:54.720 に答える