2

私は、小数点以下4桁の数字を何百万も与えてきました。

それらは、複雑な方法で (最適化問題で) 加算および減算する必要があります。その後(およびその間)、正確な値を決定する必要があります。

C# では、次の 3 つの可能性が思い浮かびました。

  1. double を使用し、比較のために丸め誤差を定義します。
  2. 10 進数型を使用する
  3. 整数演算で機能する型を作成する

何を提案しますか?

4

2 に答える 2

6

絶対に使わないでくださいdouble。あなたが得た情報を表すものではありません。

私は個人的に使用することから始めdecimalます。取得した情報に最も適したタイプであり、結果を信頼できます。

それが遅すぎることが判明した場合は、すべての値を整数に変換し、すべての演算を行ってから元に戻すことができますが、バージョンがどのように機能するかを確認した後でのみ、これを行います。decimal

于 2012-12-29T10:00:42.080 に答える
3

double10 進数の分数の近似表現のみを提供します (たとえば、10 進数で 0.2 の正確な 2 進数表現はありません)。decimaltype は算術演算全体で正確な値を生成decimalできますが、float や double などの base2 型よりも遅くなる可能性があります。

おそらく、算術演算の前にすべての数値を 10,000 のオーダーにスケーリングし、整数を操作してから、基数を元に戻すことができます。それがどのように実行されるかを小数に対してチェックします。

于 2012-12-29T10:33:29.487 に答える