Округления
Здравствуйте, уважаемые читатели.

До Access 2002 (или 2000) встроенной функции округления не было. Поэтому все пользовались самописными. Потом появилась функция Round(). Тут можно было вдохнуть с облегчением и избавится от собственной.
Как-то заказчик прислал мне скриншот с неправильными расчетами. Анализ кода показал, что функция Round() дала сбой и округляла следующим образом (проверял в окне отладки):
9.5 =10
8.5 = 8
7.5 = 8
6.5 = 6
5.5 = 6
4.5 = 4
3.5 = 4
2.5 = 2
1.5 = 2
0.5 = 0
Разбираться было лень. В результате заменил на собственное творение, т.к. это деньги:
Public Function CM_Okrugl(ByVal dbl As Double) As Long
' округляет число dbl до целого
Dim lng As Long
lng = Fix(dbl)
If (dbl - lng) < 0.5 Then
CM_Okrugl = lng
Else
CM_Okrugl = lng + 1
End If
End Function
До встречи!
(с) Скоков Сергей
Установка быстро. Обслуживание оргтехники инженерами. Обслуживание оргтехники у метро .
Сбоя нет, вы просто используете разные правила округления.
round() округляет числа с дробной частью равной 0.5 до ближайшего четного или нуля, что статистически более верно, нежели округление в большую сторону, как у Вас.
drokos
4 Апр 09 at 21:53
А с финансовой стороны?
Я реализовал как в школе учили.
. Главное же не верно, а чтобы у клиента суммы сходились.
Сергей Скоков
6 Апр 09 at 15:09