有没有相关的在这方面有经验的朋友分享下。
我们在做数据库设计的是,涉及到金额的字段,到底存储单位是用元为单位还是用分为单位比较好。都有些什么优势。
用分~最近涉及到支付所用到的接口传递的参数都是分,微信,快钱都是这样设计的
优势我也不知道怎么说~但人民币最小单位就是分,你见过有人还用更小单位计算的吗?没有了吧,那肯定是分更方便了
电商网站的金额存储都是用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 个字节可用。
能够解决数据的范围和精度的问题。
以上两种方式都是可行的解决方案,可以根据具体情况使用合适的方案。
肯定用分啊 这是降低最小误差的。假设 用元 或者更大一点 百元 来做单位的话,那四舍五入之后就会发现不只是缺一点点