Как сделать округление в access?

    lame 6 (13635)3619 5 лет  

    Так как и везде не обязательно в именно Access, просто запомни, что для цифр существует целый тип данных и вещественных, целый не может хранить дробную часть и она будет округляться, конкретно что у Doctor_ на скрине Byte,Integer, Long Integer — это целые типы данных разница в них только в том что под эти типа выделяется разное количество памяти, byte только хранит числа от 0…255 больше не может, Integer уже до 32767, а другой еще больше, к вещественным типам относится Single, Double,(под Single выделяется меньше памяти, под Double, больше) другие там уже для других целей(только скрин описываю, на самом деле этих типов гораздо больше). Не какой магии.

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

    До 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)  До встречи! (с) Скоков Сергей 

    Существует ряд задач, для решения которых нет необходимости оперировать с большим количеством знаков после запятой. В частности, для работы с денежными единицами достаточно двух десятичных разрядов. В таком случае в определенных операциях (как промежуточных, так и производящих итоговые вычисления) необходимо выполнить округление результатов. Это может быть округление как до второго десятичного знака (скажем, до копеек, центов и т. д.), так и до целых значений. С этой целью используется функция округления, которая вводится посредством диалогового окна Мастер функций.

    Рис. 2.28. Панель функции ОКРУГЛ

    Данная функция округляет число до указанного количества десятичных разрядов. Синтаксис ее следующий:

    ОКРУГЛ(число; количество_цифр)

    здесь число — это округляемое число, количество_цифр — это количество десятичных разрядов, до которого нужно округлить число.

    Например, для операции извлечения корня в нашем примере формула округления будет иметь такой вид:

    =ОКРУГЛ(В10/(1/С10);2)

    Первый аргумент, В10/(1/С10), показывает, для какой операции выполняется округление, а второй (цифра 2) определяет количество десятичных разрядов. В нашем случае вычисления осуществляются с точностью до второго знака после запятой (например, до копеек). Однако округление необходимо производить на определенном этапе расчетов.

    ПРИМЕР

    На таможню приходит товар стоимостью 3 цента за единицу в количестве 1000 штук. Курс обмена — 29,31 руб./$, а все таможенные платежи (без учета НДС) составляют 29,45%. База начисления для таможенных платежей будет равна цене в долларах, умноженной на курс доллара и количество единиц товара:
    $0,03 * 29,31 * 1000 = 879,30 руб.

    При умножении базы начисления на ставку таможенного сбора получается сумма, которой быть не может (так как не существует пока в мире десятых и сотых долей копеек при перечислении их через банк):
    879,30 руб. * 29,45% = 258,9539 руб.

    Если и далее производить расчеты без округления размера таможенного платежа, то можно получить стоимость партии товара, которая равна стоимости товара плюс таможенные платежи:
    879,30 руб. + 258,9539 руб. = 1138,25385 руб.

    Таким образом, цена единицы товара будет следующей:
    1138,25385 руб. : 1000 шт. = 1,138254 руб.

    Полученные неправильные результаты представлены в табл. 2.1.

    0,03 1000 29,31 29,45% 258,9539 1138,25385 1,138254

    Таблица 2.1. Пример неправильного расчета таможенных платежей

    Поэтому некоторые значения следует округлить с точностью до копеек. А сумма таможенного платежа должна вычисляться по формуле:

    =ОКРУГЛ(цена в долларах х на курс доллара х количество;2)

    Цифра 2 означает, что выполняется округление с точностью до второго знака (то есть до копеек).

    Таким же образом можно округлить и стоимость партии товара, в результате чего получится сумма, равная 1138,25 руб. Однако операция округления цены за единицу товара может привести к нежелательным последствиям. Это зависит от того, как происходит расчет цены. Если округлить цену товара до копеек, исходя из стоимости партии товара:

    =ОКРУГЛ(1138,25/1000;2)

    то результат будет равен 1,14 руб. Но получается парадокс: произведя обратный расчет, мы получим, что партия стоит 1,14 * 1000 =1140 руб. Откуда-то взялись лишние 2 рубля. Эти 2 рубля могут значительно усложнить ведение бухгалтерского учета, если в бухгалтерской программе не предусмотрена возможность задания разрядности денежной единицы при некоторых операциях. До какого же знака целесообразно задать точность в данном примере?

    В нашем случае точность округления должна быть равна разрядности копеек (2 знака после запятой) плюс разрядность числа, определяющего объем партии (у нас 3 разряда). Таким образом, необходимо округление до пятого знака.

    0,03 1000 29,31 29,45% 258,95 1138,25 1,13825

    Таблица 2.2. Пример правильного расчета таможенных платежей и стоимости товара

    В Excel существует более 10 функций округления, каждая из которых выполняет эту операцию по-своему. Часть из них представлена на рис. 2.29. Исчерпывающую информацию относительно всех этих функций вы можете получить в справке Excel, вызываемой путем нажатия функциональной клавиши .

    Рис. 2.29. Функции округления в Excel