找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

6056

积分

0

好友

774

主题
发表于 4 天前 | 查看: 10| 回复: 0

网友方案

金额到底用 Long 还是 BigDecimal?这个问题在 Java 后端圈子里几乎成了“月经贴”。有人拿实际项目经验说事,也有人从工程设计角度分析。下面整理了网友们的十种方案,看看哪一种更对你的场景。

Long

网友评论:金额用Long单位分避免小数点问题

网友评论:对接过的银行都是Long传递金额单位分

解读:把单位定为分,金额就没有小数点,自然也不存在小数精度问题。Long 的取值范围也足够覆盖绝大多数业务金额。

BigDecimal

网友评论:算钱用BigDecimal是常识

网友评论:BigDecimal为金额情形设计更精确

解读:BigDecimal 本来就是为精确计算设计的,大家都这么用。如果选 Long,多少显得不够“专业”,后续需求变动时适应性也差一些。

Long 和 BigDecimal

网友评论:复杂运算用BigDecimal简单场景用Long

网友评论:财务相关用BigDecimal其他系统用Long

解读:成年人当然可以全都要。价格、金额这类字段用 Long,汇率、费率等需要多位小数的场景再上 BigDecimal,各取所长。

String

网友评论:应该用String没有干不了的事

网友评论:用String整数元和角分分开存储

解读:万物皆可 String。只是相关的校验、转换、计算规则都得自己写,适合愿意折腾的高手。

Protobuf

网友评论:Protobuf有啥我用啥

解读:脱离框架谈方案确实有点耍流氓。Protobuf 里压根没有 BigDecimal,要么用 string 表示,要么自定义类型,性能上多少会有些代价。

自定义

网友评论:自定义类带币种和最小单位金额

网友评论:自定义金额类避免歧义

解读:这算是架构师的思路。程序不是能跑起来、不出错就够了,还得看设计能不能清晰表达业务需求,好不好理解、扩展和维护。金额类最好能显式带上币种和最小单位,避免歧义。

听领导的

网友评论:技术选型听领导的

网友评论:不用争听领导的录音

解读:这可能是真实职场里最优先的“方案”。技术上可以较真,但最终还是得听领导的,必要时也留好记录保护自己。

问 AI

网友评论:问问GPT就行了

解读:与其自己纠结,不如把问题丢给大语言模型。作为想提高效率的技术人,工具该用就用,GPT 回答这类问题通常又快又稳。

节省型

网友评论:用tinyint就足够

网友评论:short int或char好点

解读:节俭是美德。如果业务金额就几百块,用 int、short 甚至 byte 也未尝不可,没必要一上来就 Long 或 BigDecimal。

莫名其妙

网友评论:BigDecimal特定芯片环境可能有差异

解读:这条提到 BigDecimal 在特定芯片环境下可能因硬件差异产生与预期不同的结果,用 Long 反而更稳妥,只是需要额外处理小数转换。

原文 https://juejin.cn/post/7314928953193578505




上一篇:Ubuntu 24.04.5 LTS x86_64 OVF 模板:VMware 虚拟机部署与配置要点
下一篇:程序员水平差距能有多大?12个降低代码可读性的真实开发习惯
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-9-17 13:13 , Processed in 0.444531 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表