原文地址:https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html
FLOAT 和 DOUBLE 类型表示近似值。MySQL 对单精度值使用四个字节,双精度值使用八个字节。
对于 FLOAT,SQL 规范允许在 FLOAT 后面通过括号中的关键字来指定精度(不是指数的范围)。 MySQL 也支持这个精度规范,但精度值仅用于确定存储大小。精度从 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。
因为浮点值是近似值而不是作为精确值存储,所以将其精确处理可能会导致一些问题。它们也受平台或实现依赖性的约束。有关更多信息,请参见 第B.5.4.8节“Problems with Floating-Point Values”
为了保证可移植性,在存储近似值时应使用 FLOAT 或 DOUBLE PRECISION,最好不要指定精度或数字位数。