货币选择int还是decimal类型? 哪个更好?

首先场景为RMB, 简单商城, 两位小数, 前后端都包含;

decimal单位元, int单位分.

该如何选择的? 哪个更好些?

阅读 14k
8 个回答

做过售检票系统(C++),涉及到钱的单位都是使用long long,单位是分。不用考虑计浮点数的精度问题,某些语言(如PHP)浮点数的计算可能会丢失精度,影响计算结果的准确性。所以推荐使用小单位来代替小数。

也可以用int,然后model层进行扩大100倍和缩小一百倍

我这边是用decimal的,数据库直接是number(28,8)

这种在像erp的系统中要换算的比较常用。 int分的话,换算时也会出现小数的。。

decimal带两位小数,更精准一些

看精度要求,如果本身对精度要求比较高,建议使用decimal.因为小数的存在可以更精确.如果精度要求不高,也就是分的话,那int完全没有问题.何为精度要求,打个比方,银行的利率.你就应该懂了.

我这边用的decimal(14,3),语言PHP,计算使用BC扩展也保留3位,显示出时转成2位

如果需要计算啥的 建议 int 吧
建议数据库里存 分为单位 避免浮点运算,因为浮点运算计算机油精度问题

比如:1.01元 对应的数据存储 是 101

看单位吧,如果单位是元,用decimal;如果是分,用int

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题