Приблизительные числовые типы
Приблизительные числовые типы плавающей запятой, поддерживаемые 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
.
При использовании таких типов данных в выражениях рекомендуется крайне внимательно и серьёзно подойти к вопросу округления результатов расчётов.