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