分为三种:
- float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
- double:双精度实型,含字节数为8,64bit,数值范围-1.7E308~1.7E308(15个有效位)
- decimal:数字型,128bit,不存在精度损失,常用于银行账目计算(28个有效位)
顾名思义就是double型的实体占用内存空间是float的两倍。float是4个字节而double是8个字节。float和double类型的数据,无法精确表示计算结果,这是由于float和double是不精确的计算。
项目中有小数计算,需要限制小数点后两位,float类型计算有误差,于是使用decimal类型计算。
decimal的详细介绍
decimal(a,b)
参数说明:
a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数,小数位数必须是从0到a之间的值,默认小数位数是0.
DECIMAL(20,2) 指的就是总共能存20位数字,末尾2位是小数(小数点不算在长度内)
总结
数值存储范围越小的精度越高,存储数值范围越大,精度就越不准确。
如果存储正常金额的情况下,使用money,好处在于可以存储不指定的小数点位数的数值,比较真实。如果对于既要要求精度,又要固定小数点位数的数值存储,采用decimal(numeric),优点在于可以自定义小数点位数,精度高。如果数值范围巨大只能用float(real)类型了,一般不提倡使用