文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  浮点类型(近似值)- FLOAT、DOUBLE

13.1.4 浮点类型(近似值)- FLOAT、DOUBLE

FLOATDOUBLE 类型表示近似的数值数据值。MySQL 使用四个字节存储单精度值,使用八个字节存储双精度值。

对于 FLOAT,SQL 标准允许在关键字 FLOAT 后面的括号中使用可选的精度规范(而不是指数范围)来表示位数,即 FLOAT(p)。MySQL 也支持这种可选的精度规范,但是 FLOAT(p) 中的精度值仅用于确定存储大小。精度为 0 到 23 会生成 4 字节的单精度 FLOAT 列。精度为 24 到 53 会生成 8 字节的双精度 DOUBLE 列。

MySQL 允许使用非标准语法:FLOAT(M,D)REAL(M,D)DOUBLE PRECISION(M,D)。在这里,(M,D) 表示可以存储最多 M 位数字的值,其中小数点后可以有 D 位数字。例如,定义为 FLOAT(7,4) 的列将显示为 -999.9999。MySQL 在存储值时会进行四舍五入,因此,如果将 999.00009 插入到 FLOAT(7,4) 列中,则近似结果为 999.0001

FLOAT(M,D)DOUBLE(M,D) 是非标准的 MySQL 扩展,并且已被弃用。您应该预计在未来版本的 MySQL 中将删除对此类变体的支持。

由于浮点值是近似值,并且不存储为精确值,因此尝试在比较中将其视为精确值可能会导致问题。它们还受平台或实现依赖性的影响。有关更多信息,请参见 第 B.3.4.8 节“浮点值的问题”

为了获得最大的可移植性,需要存储近似数值数据值的代码应使用 FLOATDOUBLE PRECISION,并且不指定精度或位数。