Десятичные значения не округлены должным образом - PullRequest
0 голосов
/ 31 января 2011

В моей базе данных SQL Express есть несколько десятичных (18, 2) полей.

Теперь, когда некоторые агрегаты получают результат.Я иногда теряю 1 цент.

Скажем, результат должен быть 192,84 евро, моя программа показывает 192,83 евро, но если вы сделаете агрегаты с помощью калькулятора, вы увидите 192,84.

Любая идеяпочему это могло произойти.Я использую элементы управления DevExpress с форматом строки валюты.У меня есть идея изменить поля на десятичные (18,3), что вы думаете?

Спасибо

[РЕДАКТИРОВАТЬ]

Теперь, когда значения суммируются дляпервый раз показывает (например, 1.074,64 как 1.074,65), который сказал, что я могу видеть, что это округляется, но правильным является 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, если я выхожу из среды, показывая этизначения и попробуйте проверить их еще раз после некоторого сохранения в базе данных и пересчитать при вводе в форму показывает правильно, но в базе данных уже неправильно.

Спасибо.

1 Ответ

0 голосов
/ 31 января 2011

Как данные хранятся в базе данных?Float?

Если это деньги, сохраните их как десятичное число (18,2).

РЕДАКТИРОВАТЬ: Что такое "ValuesDecimals"?Если вы скажете SELECT SUM (myfield) и myfiled равно 18,3, то это будет правильно.

Похоже, вы суммируете с помощью "ValuesDecimals", что может быть источником ошибки.

Попробуйте показать полный код?

...