浮点数类型与定点数类型:mysql
浮点数类型包括单精度浮点数(float型)和双精度浮点数(double型)。定点数类型就是decimal型。sql
OK,如今咱们来看看这几种数据类型的取值范围和存数的字节数。
关于上表的解释:
数据库
1,Decimal型的取值范围和double相同。可是decimal的有效取值范围由M和D决定,并且Decimal型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的。安全
2,MySQL中能够指定浮点数和定点数的精度。其基本形式以下:数据类型(M,D)。spa
其中,“数据类型”参数是浮点数或定点数的数据类型名称,M参数称为精度,是数据的总长度,小数点不占位置。D参数成为标度,是指小数点后面的长度是D。
.net
举个例子:float(6,2)的含义数据是float型,数据长度是6,小数点后保留2位。因此,1234.56是符合要求的。blog
3,注意:上述指定的小数精度的方法虽然都适用于浮点数和定点数,但不是浮点数的标准用法。建议在定义浮点数时,若是不是实际状况须要,最好不要使用,若是使用了,可能会影响数据库的迁移。ci
4,相反,对于定点数而言,decimal(M,D)是定点数的标准格式,通常状况下能够选择这种数据类型。字符串
5,若是插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。get
在MySQL中,定点数以字符串形式存储,所以,其精度比浮点数要高,并且浮点数会出现偏差,这是浮点数一直存在的缺陷。若是要对数据的精度要求比较高,仍是选择定点数decimal比较安全。