首页新闻找找看学习计划

关于数据库设计金额的存储单位到底用元还是用分好。

0
[待解决问题]

有没有相关的在这方面有经验的朋友分享下。

我们在做数据库设计的是,涉及到金额的字段,到底存储单位是用元为单位还是用分为单位比较好。都有些什么优势。

yzy的主页 yzy | 菜鸟二级 | 园豆:309
提问于:2018-07-19 10:48
< >
分享
所有回答(3)
1

用分~最近涉及到支付所用到的接口传递的参数都是分,微信,快钱都是这样设计的

优势我也不知道怎么说~但人民币最小单位就是分,你见过有人还用更小单位计算的吗?没有了吧,那肯定是分更方便了

远扬 | 园豆:86 (初学一级) | 2018-07-19 11:00
1

电商网站的金额存储都是用int类型的,存到分即可,数据里的100表示100分,即1元。
这样做起来避免了 mysql 数据库在 sum float 的时候 可能遇到的BUG。

对于游戏币等代币,一般存储为int类型是可行的。问题在于越界,int类型长度为11位。在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,不到10亿的数值,如果业务增长很快的话,就会给自己留下隐患。

Decimal是专门为财务相关问题设计的数据类型。

DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:

·M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认 值是10。

·D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。

说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。

如DECIMAL(5,2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。

能够解决数据的范围和精度的问题。

以上两种方式都是可行的解决方案,可以根据具体情况使用合适的方案。

ycyzharry | 园豆:19371 (专家六级) | 2018-07-19 14:11
0

肯定用分啊   这是降低最小误差的。假设 用元 或者更大一点  百元  来做单位的话,那四舍五入之后就会发现不只是缺一点点 

^keepHungry$ | 园豆:532 (小虾三级) | 2018-07-23 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册