无需对金额进行计算时,仍需使用BigDecimal吗?
你的思路完全没问题——这个场景下确实没必要强行用BigDecimal
我太懂这种纠结了,很多时候我们会被“金额必须用BigDecimal”的固有印象框住,但回到你的实际场景来看,坚持用double真的没毛病:
全程无计算,精度风险不存在:BigDecimal最大的价值就是解决浮点数运算的精度丢失问题,但你的金额字段只是从数据库读出来直接做UI渲染,或者原封不动通过HTTP传给其他应用写入另一数据库——全程没有任何算术操作,那精度丢失的场景根本不会发生。数据库里存的是类似
double的类型,你用Java的double读取再传递,数据的二进制表示是完全一致的,不会额外引入误差。类型匹配更简洁,无额外转换成本:既然数据库本身用的是
double类类型,直接用Java的double做映射,代码里不需要额外的类型转换逻辑,既简洁又能避免转换过程中可能出现的小问题(虽然概率极低,但确实没必要多这一步冗余操作)。
当然,这里也提个小醒:如果未来你的需求有变化,比如要增加金额计算、对账、金额汇总这类逻辑,那时候就必须切换到BigDecimal了。但就目前的场景而言,你的做法完全合理。
内容的提问来源于stack exchange,提问作者user1884155
相关产品推荐
相关产品推荐

