Страница 1 из 1

ACCESS'2000 Проблема округления. Помогитееееее!!!!!

Добавлено: 01 дек 2004, 14:03
olla_2004
В отчетной форме в поле "сумма" без использования функции round()
получается следующее:
цена кол-во сумма
======================
180,54 528,9 95 487,6060
345,15 31,9 11 010,2850
итого: 106 497,8910
Если применить к полю "сумма" функцию round(x;2) получается:
180,54 528,9 95 487,61
345,15 31,9 11 010,29
итого: 106 497,89
т.е. в итого теряется ОДНА КОПЕЙКА!
По строкам у поля "сумма" в качестве источника данных стоит
формула "=round([Сумма];2)"
В поле "Итого" в качестве источника даннных стоит формула
"=Sum(round([Сумма];2))"
Т.е. округление применяется но правильно не округляет!!!???
Где-то была инфа, что есть так называемое
"ассиметричное арифметическое округление" которое гласит, что:
"Если отбрасываемая цифра равна 5 , а за ней нет значащих цифр
(или стоят одни нули), то последнюю оставляемую цифру увеличивают на единицу,
когда она нечетная, и оставляют неизменной, когда она ЧЕТНАЯ."
Судя по тому, как ведет себя Access, именно это и происходит.
Но мне надо, чтобы в итого было 90 коп., а не 89 коп.!!!
Как решить эту проблему???????????????

Добавлено: 03 дек 2004, 04:17
Naeel Maqsudov
Типы DOUBLE (Числовой двойной точности) обеспечивает точность в 15 значащих цифр, тип CURRENCY (Денежный) - 15 знаков в целой части и еще 4 в дробной (на самом деле это масштабированное целое, и поэтому ошибки округления здесь сведены к минимуму), однако, судя по приведенным выше значениям вы уже вышли за эти пределы.

Access2000 не поддерживает более длинных числовых типов, так что прийдется подыскивать другую СУБД.
Впрочем, посмотрите, не поменялось ли что-гибудь в этом отношении в Access2003... но это вряд ли.