Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Floating-Point Types (Approximate Value) - FLOAT, DOUBLE

13.1.4 浮点类型(近似值)- FLOAT, DOUBLE

类型 FLOATDOUBLE 代表近似数值数据。MySQL 使用四个字节存储单精度值,八个字节存储双精度值。

对于 FLOAT,SQL 标准允许在括号中指定精度(但不指定指数范围)紧跟在关键字 FLOAT 后,即 FLOAT(p)。MySQL 也支持这种可选的精度规范,但在 FLOAT(p) 中的精度值仅用于确定存储大小。精度从 0 到 23 将结果在 4 字节单精度 FLOAT 列中。精度从 24 到 53 将结果在 8 字节双精度 DOUBLE 列中。

MySQL 允许非标准语法:FLOAT(M,D)REAL(M,D)DOUBLE PRECISION(M,D)。这里,(M,D) 表示可以存储最多 M 位数字,其中 D 位数字可以在小数点后。例如,定义为 FLOAT(7,4) 的列将显示为 -999.9999。MySQL 在存储值时执行舍入,因此如果您将 999.00009 插入到 FLOAT(7,4) 列中,近似的结果将是 999.0001

FLOAT(M,D)DOUBLE(M,D) 是非标准的 MySQL 扩展;它们已弃用。您应该期望在未来版本的 MySQL 中删除对这些变体的支持。

因为浮点值是近似的,不存储为精确值,因此在比较中将它们视为精确值可能会导致问题。它们也受到平台或实现依赖的影响。有关更多信息,请参阅 第 B.3.4.8 节,“浮点值的问题”

为了最大限度地提高可移植性,需要存储近似数值数据的代码应该使用 FLOATDOUBLE PRECISION,不指定精度或数字位数。