欢迎使用CSDN-markdown编辑器

来源:互联网 发布:日本电视台网络直播 编辑:程序博客网 时间:2024/06/02 02:40

MySQL数据库中金额字段采用DECIMAL数据类型

最近在做金融的项目,由于在设计表时存储金额的字段采用的是double的数据类型,导致在做金额计算时会有一定几率丢失精度,后来查询相关文档后(google+百度)得知金额类的字段类型为DECIMAL才能避免这样的问题。

float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。
例:decimal(2,1),此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345…”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。

备注:

DECIMAL数据类型用于要求非常高的精确度的计算中,这些类型允许指定数值的精确度和计数方法作为选择参数。精确度在这里是指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的个数。例如,语句DECIMAL (5,2)规定了存储的值将不会超过5位数字,开且小数点后面有2位数字。