Типы данных float и real (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой. Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно. Синонимом по стандарту ISO для типа real является float(24).

Соглашения о синтаксисе Transact-SQL

Синтаксис

float [ (n) ] Где n — это количество битов, используемых для хранения мантиссы числа в формате float при экспоненциальном представлении. Определяет точность данных и размер для хранения. Если указан параметр n, это должно быть значение в диапазоне от 1 до 53. Значение n по умолчанию — 53.

Значение n Точность Объем памяти
1-24 7 цифр 4 байта
25-53 15 знаков 8 байт

Примечание.

SQL Server обрабатывает n как одно из двух возможных значений. Если 1<=n<=24, n принимает значение 24. Если 25<=n<=53, n принимает значение 53.

Тип данных SQL Server float[(n)] соответствует стандарту ISO для всех значений n от 1 до 53. Синонимом типа double precision является тип float(53).

Замечания

Тип данных Диапазон Хранилище
float - 1,79E+308 — -2,23E-308, 0 и 2,23E-308 — 1,79E+308 Зависит от значения n
real - 3,40E + 38 — -1,18E - 38, 0 и 1,18E - 38 — 3,40E + 38 4 байта

Типы данных с плавающей запятой и реальные называются приблизительными типами данных. Поведение float и real соответствует спецификации IEEE 754 на приблизительных числовых типах данных. Сведения о том, как компилятор Microsoft Visual C (MSVC) использует стандарт IEEE 754, см. в разделе IEEE Floating-Point Representation

Приблизительные числовые типы данных не хранят точные значения, указанные для многих чисел; они хранят близкое приближение значения. Для некоторых приложений крошечная разница между указанным значением и сохраненным приближением не имеет значения. Для других, однако, разница важна. Из-за приблизительного характера типов данных float и реальных типов данных не используйте эти типы данных, если требуется точное числовое поведение. Примеры, требующие точных числовых значений, являются финансовыми или бизнес-данными, операциями с округлением или проверками равенства. В этих случаях используйте целочисленное, десятичное, числовое значение, деньги или типы данных smallmoney.

Избегайте использования плавающих или реальных столбцов в условиях поиска предложения WHERE, особенно в условиях поиска = и <> операторов. Рекомендуется ограничить значения с плавающей запятой и реальными столбцами > или < сравнениями.

Преобразование данных типа float и real

Значения float усечены при преобразовании в любой целочисленный тип.

Если вы хотите преобразовать из float или real в символьные данные, использование строковых функций STR обычно более полезно, чем CAST(). Причина заключается в том, что STR() обеспечивает больше контроля над форматированием. Дополнительные сведения см. в статьях STR (Transact-SQL) и Функции (Transact-SQL).

До SQL Server 2016 (13.x) преобразование значений с плавающей запятой в десятичное или числовое ограничено только значениями точности 17 цифр. Любое значение типа float менее 5E-18 (в экспоненциальном представлении 5E-18 или десятичном представлении 0.000000000000000005) округляется до 0. Это больше не ограничение по состоянию на SQL Server 2016 (13.x).