FLOAT、DOUBLE、DECIMAL区别
float:浮点型,4字节,32bit。
double:双精度实型,8字节,64位
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)
decimal(M,N)
M表示:不包括小数点,不包括符号位,所能存数字的总位数(包括小数部分和整数部分) N表示:小数部分数字的位数,由此可知整数部分的位数为M-N;
DECIMAL数据类型用于要求非常高的精确度的计算中,这些类型允许指定数值的精确度和计数方法作为选择参数。精确度在这里是指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的个数。例如,语句DECIMAL (5,2)规定了存储的值将不会超过5位数字,开且小数点后面有2位数字。
另:
float和double做算术运算,数值溢出不会报错,精度会因此有损失。decimal会直接报错。
money可以更通用的表示金额,对于便利店商品这种通常固定至小数点后2位时,可以使用decimal。