### 11.1.4 浮点类型（近似值） - FLOAT、DOUBLE

这`漂浮`和`双倍的`类型表示近似数值数据值。MySQL 对单精度值使用四个字节，对双精度值使用八个字节。

为了`漂浮`, SQL 标准允许在关键字后面的位中指定精度（但不是指数范围）的可选规范`漂浮`在括号内;;那是，[`漂浮（*`p`*)`](floating-point-types.html).MySQL 也支持这个可选的精度规范，但是精度值在[`漂浮（*`p`*)`](floating-point-types.html)仅用于确定存储大小。从 0 到 23 的精度导致 4 字节单精度`漂浮`柱子。从 24 到 53 的精度导致 8 字节双精度`双倍的`柱子。

MySQL 允许使用非标准语法：`漂浮（*`米`*,*`D`*)`要么`真实的（*`米`*,*`D`*)`要么`双精度（*`米`*,*`D`*)`.这里，`(*`米`*,*`D`*)`意味着比值可以存储最多*`米`*总位数，其中*`D`*数字可能在小数点之后。例如，定义为的列`浮动（7,4）`显示为`-999.9999`.MySQL 在存储值时执行舍入，所以如果你插入`999.00009`成一个`浮动（7,4）`列，近似结果是`999.0001`.

从 MySQL 8.0.17 开始，非标准`漂浮（*`米`*,*`D`*)`和`双倍的（*`米`*,*`D`*)`不推荐使用语法，您应该期望在未来版本的 MySQL 中删除对它的支持。

由于浮点值是近似值，而不是存储为精确值，因此在比较中尝试将它们视为精确值可能会导致问题。它们还受平台或实现依赖关系的影响。有关详细信息，请参阅[第 B.3.4.8 节，“浮点值问题”](problems-with-float.html)

为了获得最大的可移植性，需要存储近似数值数据值的代码应使用`漂浮`要么`双精度`没有指定精度或位数。
