Вбудована функція
Використовуйте функцію Round () в джерелі даних текстового поля або в обчислюваному поле запиту.
Скажімо, у вас є такий вислів в рядку "Поле" в конструкторі запитів:
Податок: [Вартість] * [СтавкаНалога]
Щоб округлити до найближчої копійки, використовуйте:
Податок: Round ([Вартість] * [СтавкаНалога], 2)
округлення вниз
Щоб округлити все дробові цифри до найближчого цілого вниз, використовуйте Int ():
Int ([МоеПоле])
Всі ці числа будуть округлені вниз до 2: 2,1, 2,5, 2,8, and 2,99.
Щоб округлити вниз до найближчої копійки (напр. 10,2199 руб стають 10,21 руб), помножте на 100, округлятимете, і потім розділіть на 100:
Int (100 * [МоеПоле]) / 100
Зауважте, що виходить при округленні вниз негативних величин: Int (-2.1) дає -3, так як це і є ціле число знизу. Щоб округляти у напрямку до нуля. використовуйте Fix () замість Int ():
Fix (100 * [МоеПоле]) / 100
округлення вгору
Щоб округлити вгору до найближчого більшого цілого, скористайтеся способом, яким Int () округлює негативні числа:
- Int (- [МоеПоле])
Як показано вище, Int (-2.1) округлює вниз до -3. Тому такий вислів округлює 2,1 до to 3.
Щоб округлити вгору до найближчої копійки, помножте на -100, округлятимете, і розділіть на -100:
Int (-100 * [МоеПоле]) / -100
Округлити до найближчих 5 копійок
Щоб округлити до найближчих 5 копійок, помножте число на 20, округлите його, і розділіть на 20:
Round (20 * [МоеПоле], 0) / 20
Подібним чином, щоб округлити до найближчого четвертака, помножте на 4, округлятимете, і розділіть на 4:
Round (4 * [МоеПоле], 0) / 4
Округлити до 1000 руб.
Функція Round () в Excel приймає негативні числа в якості кількості місць від коми, напр. Round (123456, -3) округлює до 1000. На жаль, аксессовская функція цього не підтримує.
Щоб округлити до найближчих 1000 руб. розділіть на 1000, округлятимете, і помножте на 1000. Приклад:
1000 * Round ([Вартість] / 1000, 0)
Щоб округлити до 1000 руб. вниз. розділіть на 1000, отримаєте ціле число і помножте на 1000. Приклад:
1000 * Int ([Вартість] / 1000)
Щоб округлити до верхньої 1000 руб. розділіть на 1000 і помножте на -1 перед отриманням цілої величини. приклад:
-1000 * Int ([Вартість] / -1000)
Щоб округлити в сторону нуля. використовуйте Fix () замість Int ().
Альтернативно, призначена для користувача функція Кена Гетца поводиться в точності як упомнутая екселевскій функція.
Навіщо округляти?
Існує властивість Число десятічнизх знаків для полів в таблиці / запиті і для текстбоксов в формі / звіті. Це властивість впливає тільки на те, як поле відображається. а не на те, як воно зберігається. Число виглядає округленим, але при додаванні ряду чисел (напр. В примітці звіту), підсумок може «не битися".
Округляйте таке поле, коли ви робите обчислення і підсумкова сума зійдеться.
Це також відноситься і до грошових полях. Аксес відображає грошові поля округленням до найближчої копійки, але зберігає їх значення до сотої частки копійки (4 знака після коми.)
Банківська округлення
Функція Round () в Аксес використовує "банківське округлення". Коли останній значущою цифрою виявляється 5, вона округлює до найближчого парної цифри. Так, 0,125 округляється до 0,12 (2 парне), в той час як 0,135 округляється до 0,14 (4 парне.)
Головний сенс тут - рівність: 1,2,3, та 4 округлюються вниз. 6,7,8, і 9 - вгору. 0 не вимагає округлення. Так, якщо 5 весь час округляти вгору, ви отримаєте "зсунуті" результати - 4 цифри округлюються вниз, і 5 вгору. Щоб уникнути цього, "третій зайвий" (5) округляється відповідно до попередньої цифрою, що згладжує нерівність.
Помилки плаваючою комою
Дробові величини комп'ютер зазвичай трактує як числа з плаваючою крапкою. Аксессовскіе поля типів Подвійний точності (Double) або одинарної точності (Single) відносяться до такого типу. Тип "Подвійний точності" дає близько 15 знаків точності, сингл - 8 знаків (подібно ручному калькулятору).
Але ці числа є приблизними. Точно так же, як 1/3 вимагає нескінченної кількості знаків в десятковій системі, більшість чисел з плаваючою комою не можуть бути представлені точно в двійковій системі. Вікіпедія пояснює проблему точності. з якою ви стикаєтеся, оперуючи числами з плаваючою комою.
Резюме полягає в тому, що крайні цифри можуть не округлиться очікуваним вами чином, завдяки тому факту, що дійсні значення і відображаються не збігаються. Це стає особливо помітно при перевірці банківського округлення.
Один із способів уникнути подібних проблем - використовувати числа з фіксованою комою або мастшабірованние чісла.Тіп даних "Грошовий" в Аксес є типом з фіксованою комою: він завжди зберігає 4 десяткових знака.
Наприклад, відкрийте вікно Immediate Window (Ctrl + G) і введіть:
. Round (CCur (.545), 2), Round (CDbl (.545), 2)
Грошовий тип (перший) повертає 0,54, тоді як Подвійний точності - 0,55. Грошовий округлює коректно (до парної цифри 4); тип з плаваючою комою (Подвійний точності) некоректно. Подібним чином, якщо ви спробуєте 8,995, Грошовий коректно округлити вгору (до парної цифри 0), в той час як тип Подвійний точності округлити вниз (невірно.)
Грошовий тип справляється тільки з 4 десятковими знаками. Використовуйте масштабований тип Дійсний (Decimal), якщо вам потрібно більше знаків після коми.
Округлення дат і часу
Зверніть увагу, що тип Дата / Час в Аксес є особливим видом типу з плаваючою комою, в якому дрібна частина позначає час дня. Отже, поля типу Дата / Час з компонентою часу також схильні до помилок округлення.
Функція нижче округлює дату / час до зазначеної кількості секунд. Наприклад, щоб округлити до найближчого півгодини (30 * 60 seconds), використовуйте:
= RoundTime ([МоеПолеДатаВремя], 1800)
висновок
Для більш детального технічного пояснення теорії округлення в цілому, див. Статтю Клайва Максфілда (Clive Maxfield) An introduction to different rounding algorithms.