我在一篇讨论金额字段类型的文章评论区里,看到几种完全不同的答案:有人坚持用 Long 存分,有人说利息、汇率这类场景要用 BigDecimal,还有人提到接口里直接传字符串。
这些说法讨论的不是同一件事。用 Long 存分,说的是金额如何保存;利息和汇率用 BigDecimal,说的是金额如何计算;接口传字符串,通常只是数据传输格式。
已经确定最小单位的金额可以用 long 保存。计算过程中需要保留小数,或者要明确指定舍入方式,则使用 BigDecimal。两种类型可以出现在同一个系统里。

