浮点类型(近似值)(FLOAT,DOUBLE)
FLOAT
和DOUBLE
类型代表近似数字数据值。MySQL将四个字节用于单精度值,并将八个字节用于双精度值。
对于FLOAT
,SQL标准允许对FLOAT
括号中的关键字后面的位以精度(而不是指数的范围)进行可选的规范;;即。MySQL也支持此可选的精度规范,但是in的精度值仅用于确定存储大小。从0到23的精度导致4字节单精度列。从24到53的精度将导致8字节的双精度列。FLOAT(p)
FLOAT(p)
FLOAT
DOUBLE
MySQL允许使用非标准语法:或或。此处,平均值最多可以存储最多位数,其中位数可以在小数点后。例如,定义为的列在显示时将看起来像。MySQL在存储值时执行四舍五入,因此,如果将其插入到列中,则近似结果为。FLOAT(M,D)
REAL(M,D)
DOUBLE PRECISION(M,D)
(M,D)
M
D
FLOAT(7,4)
-999.9999
999.00009
FLOAT(7,4)
999.0001
从MySQL 8.0.17开始,不建议使用非标准和语法,并且在将来的MySQL版本中将删除对它的支持。FLOAT(M,D)
DOUBLE(M,D)
由于浮点值是近似值而不是作为精确值存储的,因此在比较中尝试将它们视为精确值可能会导致问题。它们还受平台或实现依赖性的约束。有关更多信息,请参见第B.4.4.8节“浮点值的问题”
为了获得最大的可移植性,需要存储近似数值数据值的代码应使用FLOAT
或DOUBLE PRECISION
不指定精度或位数。