Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Типы с фиксированной точкой

Читайте также:
  1. Общий формат представления чисел с фиксированной точкой (ффт)
  2. Тело, размерами которого в данных условиях можно пренебречь, называется материальной точкой.

Firebird предоставляет два типа данных чисел с фиксированной точкой NUMERIC и DECIMAL. Каждый тип объявляется как TYPE (P, S), где Р определяет точность (количество значащих цифр), а S – масштаб (количество цифр справа от символа десятичной точки).

Типы NUMERIC и DECIMAL, как они реализованы в FIREBIRD, являются идентичными, за исключением случая, когда точность меньше пяти. NUMERIC не соответствует стандарту SQL-92.

FIREBIRD хранит масштабированное число как тип SMALLINT (16 бит), INTEGER (32 бита) или BIGINT (64 бита) в соответствии с объявленным масштабом (размером точности). Его объявленная точность сохраняется вместе с объявленным масштабом в виде отрицательного множителя масштаба, представляющего степень числа 10. Когда к числу происходит обращение для вывода или для расчётов, оно получается произведением хранимого целого на 10 множитель масштаба.

Например, для столбца, объявленного как NUMERI (4, 3), FIREBIRD сохраняет число в виде SMALLINT. Если вы вводите число 7.2345, FIREBIRD без сообщения округляет самую правую цифру (4) и сохраняет 16-битовое целое 7235 и множитель масштаба -3. Это число будет найдено как 7.235 (7235*10-3).

Числа в формате NUMERIC с точностью меньше 5 хранятся как SMALLINT (16 разрядов). Числа в формате DECIMAL с точностью меньше 5 хранятся как INTEGER (32 разряда).

Кроме того, числа в Диалекте 1 с точностью 10 – 18 хранятся как DOUBLE PRECISION, а в Диалекте 3 – как BIGINT.

При выполнении деления типов с фиксированной точкой диалекты 1 и 3 ведут себя по-разному.

В Диалекте 3, когда оба операнда при операции деления являются типами с фиксированной точкой, FIREBIRD суммирует масштабы обоих операндов для определения масштаба результата (частного).

В Диалекте 1 деление всегда создаёт частное типа DOUBLE PRECISION.

Примеры. В диалекте 3 частное от деления DECIMAL (12.3) на DECIMAL (9,2) будет DECIMAL (18,5). (Масштабы суммируются.)

11223344.556 / 1234567.89 = 9.09090

В диалекте 1 первое число трактуется как число DOUBLE PRECISION (точность 12). Частное тоже имеет тип DOUBLE PRECISION. Результат

9.09090917308727

(по причине ошибок, присущих типам с плавающей точкой).

 

Следующие операции деления в Диалекте 3 дают различные результаты:

1 / 3.00 = 0.33 типа NUMERIC (18, 2)

потому что сумма масштабов равна 0+2 = 2

типа типа

Integer Numeric (18,2)

1.00 / 3.00 = 0, 3333 типа NUMERIC (18, 4)

потому что сумма масштабов равна 2+2 = 4

NUMERIC(18,2)

 

При выполнении умножения операндов с фиксированной точкой масштаб результата равен сумме масштабов операндов.

12.12  123.123 результат имеет масштаб 5 (2+3)

       
   
 


NUMERIC(9,2) NUMERIC(9,3)

= 1492.25076

В Диалекте 3 точность умножения чисел с фиксированной точкой будет равна 18. В Диалекте 4 если точность результата равна > 9, то результатом будет DOUBLE PRECISION.

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

12.12 + 123.123 = 135.243 будет иметь масштаб 3,

а

12.12 – 123.123 = – 111.003

 

В Диалекте 3 результат любого сложения или вычитания имеет тип NUMERIC(18, n). В Диалекте 1 он имеет тип (9, n), где n – максимальный масштаб операнда.

 

 



<== предыдущая страница | следующая страница ==>
Диалект базы данных | Безопасность в операционной среде

Дата добавления: 2014-02-28; просмотров: 405; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.