Documentation Home
MySQL 8.0 参考手册  / 第 11 章数据类型  / 11.1 数值数据类型  /  11.1.4 浮点类型(近似值)——FLOAT、DOUBLE

11.1.4 浮点类型(近似值)——FLOAT、DOUBLE

和类型表示FLOAT近似DOUBLE数值数据值。MySQL 对单精度值使用四个字节,对双精度值使用八个字节。

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

MySQL 允许非标准语法: or or 。这里的 意思是,值总共可以存储最多 位数,其中的 位数可以在小数点后。例如,定义为的列 显示为 。MySQL 在存储值时会进行舍入,因此如果插入 到列中,则近似结果为. FLOAT(M,D)REAL(M,D)DOUBLE PRECISION(M,D)(M,D)MDFLOAT(7,4)-999.9999999.00009FLOAT(7,4)999.0001

从 MySQL 8.0.17 开始,不推荐使用非标准 和 语法,您应该期望在未来版本的 MySQL 中删除对它的支持。 FLOAT(M,D)DOUBLE(M,D)

因为浮点值是近似值而不是存储为精确值,所以尝试在比较中将它们视为精确值可能会导致问题。它们还受平台或实现依赖性的影响。有关详细信息,请参阅 第 B.3.4.8 节,“浮点值问题”

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