数据库中 金钱 数据类型

发布于 2022-09-01 15:26:15 字数 215 浏览 21 评论 0

数据库中在设计金钱的时候,是选择int类型好 还是decimail

我的业务场景是 金钱到小数点后2位 比如12.11
如果采用int 我的计算比较准确 只需要显示的时候把结果缩小2位即可 例如 300 就是3块钱、20 就是2毛钱
但是如果采用decimail 一个是传递参数麻烦 二个是有计算误差 三是性能问题

请有相关金钱计算设计的人,帮忙回答下,谢谢啦~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

百合的盛世恋 2022-09-08 15:26:15

压箱底的文章。为什么不用浮点数,而是使用 decimal

如果采用 int 我的计算比较准确

你的逻辑是不是这样:int 是定点数,比较准确。

但是 decimal 也是定点数,decimal 虽然是小数,但是不是浮点数,因此 decimalint 的准确度是一样的。

只需要显示的时候把结果缩小 2 位即可,例如 300 就是 3 块钱、20 就是 2毛钱。

缩小2位。怎么缩写?除以10?还是变成字符串,左移?

你不觉得麻烦吗?

但是如果采用 decimal,一个是传递参数麻烦,二个是有计算误差,三是性能问题。

  1. decimal 就是小数,定点小数。所以,传递参数肯定不麻烦。(不知道你使用什么语言?)

  2. decimal 在所有的表示范围内,都可以精确表示出来。不会像浮点数一样存在误差。

  3. 比起你自己反复的乘以10,除以10, decimal 的性能还是比你的高。

再次推荐我写的那2篇文章,破除对小数定点数浮点数的误解。

葵雨 2022-09-08 15:26:15

一般用decimal

风尘浪孓 2022-09-08 15:26:15

decimal 比较合理一点

猫腻 2022-09-08 15:26:15
decimal(10,2)
吹泡泡o 2022-09-08 15:26:15

@justjavac 已经解释的很好了
float占4个字节,double占8个字节,decimail(M,D)占M+2个字节
decimail精度更高,如果不是decimal,2个字段a为0.1,b为0.2 select a+b;会不等于0.3//js也这样。。。

囍孤女 2022-09-08 15:26:15

我记得还有个money的数据类型。

青萝楚歌 2022-09-08 15:26:15

当年我玩冒险岛online的时候,仓库里最多只能放2147483647的钱。所以盛大用的应该是有符号整型=。=

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文