阿里巴巴 Java 开发规范:货币金额,均以最小货币单位且整型类型来进行存储, 和前端的交互也用整形吗?

2021-10-19 11:39:35 +08:00
 gancl

和前端的交互也用整形吗? 我们现在内部是给前端用元, 存数据库用分单位.

如果忘记转换, 差的就是 100 倍的价格, 用 BigDecimal 差的就是 1 分钱的价格, 两个相比较起来, 还不如用 BigDecimal

在微服务内部互相调用, 返回的价格应该和给前端的是一样的, 会转了又转

想问下这个规则要怎么使用?

4476 次点击
所在节点    MySQL
27 条回复
opengps
2021-10-19 22:17:14 +08:00
前阵子对结果微信支付和支付宝支付,这俩:一个是以分为单位的整数,一个是以 2 位小数点为规范的小数。
IvanLi127
2021-10-20 15:58:51 +08:00
好好的 Decimal 不用,多辜负这个数据类型。。。。如果要整数的话,那就看你们后端愿不愿意把这个特性暴露给前端了。反正后端不处理的话,最后前端兜底呗。

话说有啥语言没办法封装一个可靠的计算库来计算有限小数位的小数?
gancl
2021-11-02 10:34:32 +08:00
@AoEiuV020 @NULL2020 请问下微服务内部 feign 调用返回的要用分还是元?
NULL2020
2021-11-02 10:43:39 +08:00
@gancl #23 根据自己业务具体问题具体分析啊,跟微服务提供者商量
NULL2020
2021-11-02 10:45:04 +08:00
数据库存整数类型,是为了方便有时候 SQL 查询时需要做运算,自己在代码层面做好转换就行了
chenzheyu
2021-11-04 09:57:01 +08:00
google ads api 是用 bigint 来存储,1115000000 =》 1115 元
tyqing
128 天前
如果你的业务分析下来说不出 Long 的弊端也分析不出 BigDecimal 的优势,那么请一定要用 Long 来存储分,我接手了一个烂摊子项目,里面库存数量和商品金额都用 BigDecimal 来计算,真是恶心到了,大量的 BigDecimal 计算带来了极其糟糕的阅读体验和开发体验。
接手过这种垃圾项目乱用 BigDecimal 之后就知道 Long 是有多美好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/808813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX