为什么不能用浮点数表示金额?
面试回答模板¶
面试官: 为什么不能用浮点数表示金额?
你:
核心就一条:浮点数二进制存不了十进制小数,算钱有精度误差。
比如 0.1 + 0.2,你用 double 算出来是 0.30000000000000004,不是 0.3。金额差一分一毫就是事故,对账对不上、退款算错、财务告警。
正确做法: 用 BigDecimal,或者把元转成分用 long 存整数,100 分就是 1.00 元,整数运算没有精度问题。

面试官: 为什么不能用浮点数表示金额?
你:
核心就一条:浮点数二进制存不了十进制小数,算钱有精度误差。
比如 0.1 + 0.2,你用 double 算出来是 0.30000000000000004,不是 0.3。金额差一分一毫就是事故,对账对不上、退款算错、财务告警。
正确做法: 用 BigDecimal,或者把元转成分用 long 存整数,100 分就是 1.00 元,整数运算没有精度问题。
