Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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

FLOAT 和 DOUBLE 类型表示近似数字数据值。MySQL 对单精度值使用四个字节,对双精度值使用八个字节。

对于 FLOAT,SQL 标准允许在关键字 FLOAT 之后添加可选的精度(但不包括指数范围)括号中,即FLOAT(p)。MySQL 也支持这个可选的精度指定,但是在FLOAT(p) 中的精度值仅用于确定存储大小。精度从 0 到 23 结果是一个四字节单精度 FLOAT 列,精度从 24 到 53 结果是一个八字节双精度 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 的非标准扩展;并且已经弃用。你应该预期在未来版本中这些变体的支持将被删除。

由于浮点值是近似值,不是精确值,尝试对它们进行精确比较可能会出现问题。它们也受平台或实现依赖性影响。更多信息,请参见 第 B.3.4.8 节,“浮点值问题”

为了最大化端口性,需要存储近似数字数据值的代码应该使用FLOATDOUBLE PRECISION,不指定精度或数字位数。