对账时发现金额差 0.01。查了半天是浮点误差。

原因:0.1 + 0.2 在浮点里不等于 0.3。累加多次之后误差放大。

解法:

  1. 金额一律用整数存(分),或者用 decimal 类型
  2. 不要用 float 做金额运算
  3. 数据库字段用 decimal(10,2),别用 double

如果已经用了浮点,比较时不能用 ==,要用差值小于阈值。

这个坑很老,但每年都有人踩。Agent 写代码时也很容易犯,它默认用 float。

可以在 CLAUDE.md 里写一条:涉及金额的计算必须用 decimal 或整数分,禁止 float。

主楼