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

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

为了漂浮, SQL 标准允许在关键字后面的位中指定精度(但不是指数范围)的可选规范漂浮在括号内;;那是,漂浮(*p*).MySQL 也支持这个可选的精度规范,但是精度值在漂浮(*p*)仅用于确定存储大小。从 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 节,“浮点值问题”

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