Типы данных 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).