floating-point-types.md 1.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
### 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)

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