Використання типів даних decimal, float і real
Тип даних decimal може зберігати не більше 38 розрядів, всі з яких можуть бути праворуч від десяткового роздільника. Тип даних decimal зберігає точне уявлення числа. Немає поняття наближеності для значення, що зберігається.
Два атрибути, які визначають стовпці, змінні і параметри decimal.
Визначає точність або кількість розрядів, яке може зберігати об'єкт.
Визначає масштаб або кількість розрядів, яке може бути розташоване праворуч від десяткового роздільника.
p і s повинні відповідати правилу: 0 <= s <= p <= 38.
За замовчуванням максимальна точність типів даних numeric і decimal становить 38 розрядів. У Transact-SQL тип даних numeric функціонально еквівалентний типу даних decimal.
Використовуйте тип даних decimal для зберігання чисел в десятковій системі числення, коли значення типу даних повинні зберігатися точно так, як задано.
Додаткові відомості про вплив математичних операцій на точність і масштаб результату см. В розділі Точність, масштаб і довжина (Transact-SQL).
Типи даних float і real називаються приблизними типами даних. Поведінка float і real відповідає специфікації IEEE 754 для приблизних числових типів даних.
Приблизні числові типи даних не зберігають точних значень, заданих для багатьох чисел. Замість цього вони зберігають дуже добре наближення для цих значень. Для багатьох додатків відмінність між заданим значенням і збереженим наближенням несуттєво. Однак в деяких випадках ця різниця стає відчутним. Унаслідок приблизною природи типів даних float і real не використовуйте їх, якщо потрібна точність зберігання значень. Наприклад, в фінансовихдодатках, в операціях, пов'язаних з округленням, або в перевірках на точне рівність. Замість цього використовуйте цілі типи даних, decimal. money або smallmoney.
Уникайте використання стовпців типів float і real в реченні WHERE, особливо при використанні логічних операторів = і <>. Рекомендується обмежити використання стовпців float і real операціями порівняння> або <.
Специфікація IEEE 754 забезпечує чотири режими округлення: округлення до найближчого, округлення вгору, округлення вниз і округлення до нуля. Microsoft SQL Server використовує округлення вгору. Всі ці режими гарантують точність представлення, але дають злегка відрізняються результати для значень з плаваючою точкою. Так як двійкове подання числа з плаваючою точкою може використовувати безліч допустимих схем округлення, то це призводить до неможливості точного завдання значення з плаваючою точкою.