# 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 节,“浮点值问题”
为了获得最大的可移植性,需要存储近似数值数据值的代码应使用漂浮
要么双精度
没有指定精度或位数。