FirebirdSQL logo
 Структура языка SQLОбщие элементы языка 

Типы данных с плавающей точкой

Типы данных с плавающей точкой хранятся в двоичном формате IEEE 754, который включает всебя знак, показатель степени и мантиссу. Firebird имеет две формы типов с плавающей точкой:

  • приблизительные числовые типы (или двоичные типы с плавающей точкой);

  • десятичные типы с плавающей точкой.

Приблизительные числовые типы

Приблизительные числовые типы плавающей запятой, поддерживаемые Firebird представлены типами 32-битной одинарнойточностью и 64-битной двойной точности. Эти типы доступны со следующими именами стандартных типов SQL:

  • REAL — 32-битный одинарной точности (синоним типа FLOAT);

  • FLOAT — 32-битный одинарной точности;

  • DOUBLE PRECISION — 64-битный двойной точности;

  • FLOAT(p), где p — точность в двоичных числах

    • 1 <= p <= 32 — 32-битное одинарной точности (синоним типа FLOAT)

    • 33 <= p <= 53 — 64-битное двойной точности (синоним типа DOUBLE PRECISION)

Кроме того, в Firebird имеются нестандартные имена типов:

  • LONG FLOAT — 64-двойной точности (синоним типа DOUBLE PRECISION);

  • LONG FLOAT(p), где p — точность в двоичных числах. 1 <= p <= 53 — 64-битное двойной точности (синоним типа DOUBLE PRECISION)

Точность этого типов FLOAT и DOUBLE PRECISION является динамической, что соответствует физическому формату хранения,который составляет 4 байта для типа FLOAT и 8 байт для типа DOUBLE PRECISION.

Учитывая особенности хранения чисел с плавающей точкой, этот тип данных не рекомендуется использовать для хранения денежных данных. По тем же причинам не рекомендуется использовать столбцы с данными такого типа в качестве ключей и применять к ним ограничения уникальности.

При проверке данных столбцов с типами данных с плавающей точкой рекомендуется вместо точного равенства использовать выражения проверки вхождения в диапазон, например BETWEEN.

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