小数型


1:概述(浮点型和定点型)


1:浮点数类型包括单精度浮点数(float型)和双精度浮点数(double型)。定点数类型就是decimal型。




mysql 数据类型浮点型 mysql浮点型和定点型_定点数




2;两者区别


1:浮点型


小数点移动,精度有限,而且会丢失精度(系统自动四舍五入),4个字节,最大8个数字


整数部分不能超出长度,但是小数部分可以超出长度



mysql 数据类型浮点型 mysql浮点型和定点型_数据类型_02




2:定点型


小数点固定:精度固定,不会丢失精度,根据数据传递,自动扩充,整数35位,小数30位



mysql 数据类型浮点型 mysql浮点型和定点型_浮点数_03




1:Decimal型的取值范围和double相同。但是decimal的有效取值范围由M和D决定,而且Decimal型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的。


2:MySQL中可以指定浮点数和定点数的精度。其基本形式如下:数据类型(M,D)。


其中,“数据类型”参数是浮点数或定点数的数据类型名称,M参数称为精度,是数据的总长度,小数点不占位置。D参数成为标度,是指小数点后面的长度是D(就是小数部分的长度)。举个例子:float(6,2)的含义数据是float型,数据长度是6,小数点后保留2位。所以,1234.56是符合要求的。


3:注意:上述指定的小数精度的方法虽然都适用于浮点数和定点数,但不是浮点数的标准用法。建议在定义浮点数时,如果不是实际情况需要,最好不要使用,如果使用了,可能会影响数据库的迁移。


4:相反,对于定点数而言,decimal(M,D)是定点数的标准格式,一般情况下可以选择这种数据类型。


5:如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。


6:在MySQL中,定点数以字符串形式存储,因此,其精度比浮点数要高,而且浮点数会出现误差,这是浮点数一直存在的缺陷。如果要对数据的精度要求比较高,还是选择定点数decimal比较安全。


3:案例演示



1:创建表


mysql 数据类型浮点型 mysql浮点型和定点型_mysql 数据类型浮点型_04



2:插入数据


mysql 数据类型浮点型 mysql浮点型和定点型_mysql_05



3:常见问题


1:浮点数如果进位导致长度溢出没有问题,但是定点数不行,数字无法插入



mysql 数据类型浮点型 mysql浮点型和定点型_mysql 数据类型浮点型_06