float 和 real (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 数据库 是Azure SQL 托管实例 是Azure Synapse Analytics 是并行数据仓库

用于表示浮点数值数据的大致数值数据类型。 浮点数据为近似值;因此,并非数据类型范围内的所有值都能精确地表示。 real 的 ISO 同义词为 float(24) 。

主题链接图标 Transact-SQL 语法约定

语法

float [ (n) ] 其中 n 为用于存储 float 数值尾数的位数(以科学记数法表示),因此可以确定精度和存储大小 。 如果指定了 n,则它必须是介于 1 和 53 之间的某个值 。 n 的默认值为 53 。

n 值 Precision 存储大小
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)] 数据类型从 1 到 53 之间的所有 n 值均符合 ISO 标准 。 double precision 的同义词是 float(53) 。

备注

若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

备注

数据类型 范围 存储
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 数据

如果将 float 值转换为任一整数类型,这些值将被截断 。

若要将 float 或 real 转换为字符数据,使用 STR 字符串函数通常比使用 CAST( ) 更有用 。 这是因为 STR 能够对格式进行更严格的控制。 有关详细信息,请参阅 STR (Transact-SQL)函数 (Transact-SQL)

在进行 SQL Server 2016 (13.x) 之前,浮点值到 decimal 或 numeric 的转换仅限于精度为 17 位数字的值 。 小于 5E-18 的任何浮点值(使用 5E-18 的科学计数法或 0.000000000000000005 十进制表示法设置时)都舍入为 0。 从 SQL Server 2016 (13.x) 起,不再具有该限制。

另请参阅

ALTER TABLE (Transact-SQL)
CAST 和 CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
数据类型转换(数据库引擎)
数据类型 (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
SET @local_variable (Transact-SQL)