5 строк кода

Как писать приложения на MS Access

Округления

2 комментария

Здравствуйте, уважаемые читатели.

До 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

До встречи!

(с) Скоков Сергей

Written by Сергей Скоков

Февраль 26th, 2009 at 12:41 дп

Posted in решения

2 комментария to 'Округления'

Subscribe to comments with RSS or TrackBack to 'Округления'.

  1. Сбоя нет, вы просто используете разные правила округления.
    round() округляет числа с дробной частью равной 0.5 до ближайшего четного или нуля, что статистически более верно, нежели округление в большую сторону, как у Вас.

    drokos

    4 Апр 09 at 21:53

  2. А с финансовой стороны?

    Я реализовал как в школе учили. :-). Главное же не верно, а чтобы у клиента суммы сходились.

    Сергей Скоков

    6 Апр 09 at 15:09

Leave a Reply