在MySQL导入数据时多了一位小数,可能是因为源数据中小数位数过多,而MySQL默认的小数位数较少,导致数据在导入过程中进行了四舍五入处理,丢失了精度。解决方法可以通过在导入数据之前修改MySQL的小数位数设置,或者对源数据进行舍入处理,保留MySQL所支持的小数位数,从而避免精度损失。另外,也可以考虑使用更高精度的数据类型,如DECIMAL,来存储小数数据。

float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)
float f = 345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimal dd=345.545454879.....//可以支持28位,对最后一位四舍五入。
注:当对decimal类型进行操作时,数值会因溢出而报错。
MySQL中使用浮点数类型和定点数类型来表示小数。
浮点数类型包括单精度浮点数(float型)和双精度浮点数(double型)。
定点数类型就是decimal型。
1,Decimal型的取值范围和double相同。但是decimal的有效取值范围由M和D决定,而且Decimal型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的。
2,MySQL中可以指定浮点数和定点数的精度。其基本形式如下:数据类型(M,D)。
其中,“数据类型”参数是浮点数或定点数的数据类型名称,M参数称为精度,是数据的总长度,小数点不占位置。D参数成为标度,是指小数点后面的长度是D。
1. 在mysql中,"double"是一种浮点数数据类型,用于存储具有双精度精度的数字。它可以表示范围较大的小数值,并且可以存储正负数。
2. 有两种常见的方式来指定double类型的长度。一种是不指定长度,即使用"double"关键字,这将为该列分配默认的长度。另一种是显式指定长度,如"double(m,d)"。
3. 默认情况下,如果不指定长度,double类型的长度被设置为8字节,这对应于64位的双精度浮点数。这意味着它可以在范围为±1.7976931348623157 x 10^308的数值内存储精确到15位的小数。
总结:mysql中,double类型默认的长度为8字节,对应于64位双精度浮点数。这提供了广泛的数值范围和15位小数的精度。在创建表时,可以选择指定double字段的长度以满足特定的需求。