私は、小数点以下4桁の数字を何百万も与えてきました。
それらは、複雑な方法で (最適化問題で) 加算および減算する必要があります。その後(およびその間)、正確な値を決定する必要があります。
C# では、次の 3 つの可能性が思い浮かびました。
- double を使用し、比較のために丸め誤差を定義します。
- 10 進数型を使用する
- 整数演算で機能する型を作成する
何を提案しますか?
絶対に使わないでくださいdouble
。あなたが得た情報を表すものではありません。
私は個人的に使用することから始めdecimal
ます。取得した情報に最も適したタイプであり、結果を信頼できます。
それが遅すぎることが判明した場合は、すべての値を整数に変換し、すべての演算を行ってから元に戻すことができますが、バージョンがどのように機能するかを確認した後でのみ、これを行います。decimal
double
10 進数の分数の近似表現のみを提供します (たとえば、10 進数で 0.2 の正確な 2 進数表現はありません)。decimal
type は算術演算全体で正確な値を生成decimal
できますが、float や double などの base2 型よりも遅くなる可能性があります。
おそらく、算術演算の前にすべての数値を 10,000 のオーダーにスケーリングし、整数を操作してから、基数を元に戻すことができます。それがどのように実行されるかを小数に対してチェックします。