2011-01-31 7 views
0

SQL Expressデータベースに小数点(18,2)フィールドがあります。十進数の値が正しく丸められていません

ここでいくつかの集計が起こったときに結果が得られます。私は時々1セントを失う。

結果が192,84ユーロであるとします。私のプログラムでは192,83ユーロと表示されますが、計算機で集計すると192,84と表示されます。

なぜこのようなことが起こる可能性がありますか。私は形式の文字列通貨でDevExpressコントロールを使用します。 フィールドを10進数(18,3)に変更するアイデアはありますか?

はありがとう

値は、初めてのショーのためにsumingされている[EDIT]今

(例えば1.074,65として1.074,64)私はそれを切り捨てますが、正しいです見ることができました第2の端、65。

例:194,61 + 182,20 + 697,84 = 1.074,65ですが、1.074,64になります。これらの値をもう一度取得しようとすると、正しく表示されます。

いつも丸めるべきですか?小数点以下の値を計算する最も良い方法は何ですか?

いくつかのコード:

SumingTotal = AnObject.ListOfAType.Sum(p => p.DecimalProperty) + 
               (DecimalValue1 + DecimalValue2); 

は1.074,65に等しいが、私はこれらの 値を示す環境から抜け出す場合1.074,64を示し、いくつかは、データベースに保存した後、再びそれらをチェックして、再計算するようにしてくださいフォームに入力すると正しく表示されますが、データベースにはすでに間違っています。

ありがとうございます。

答えて

0

データはどのようにデータベースに保存されていますか?浮く?

お金の場合は、小数点(18,2)として保存してください。

EDIT: 「ValuesDecimals」とは何ですか? SELECT SUM(myfield)とmyfiledが18,3であれば、それは正しいでしょう。

"ValuesDecimals"と合計しているようですが、これはエラーの原因となる可能性があります。

完全なコードを表示してみてください。

+0

私はデータベースのフィールドに小数点の型(18,2)の型で格納していますが、私はそれを取得しません。 –

+0

Hmm。あなたは合わない正確なリストを表示できますか? – smirkingman

+0

私はいくつかのコードを投稿しようとします.... –

関連する問題