0.1 加 0.2 不等于 0.3,是二进制浮点的精度问题,不是代码写错了。
金额一律换算成整数分再运算,展示时再除以 100 还原成元。
前端用 decimal.js,后端用 BigDecimal,别用浮点数存金额。
比较两个金额别写等号,改用差额小于一分的容差判断。
// 单位:分
const total = items.reduce((s, it) => s + Math.round(it.price * 100), 0);
const display = (total / 100).toFixed(2);
// 比较用容差,不要用 ===
const eq = Math.abs(a - b) < 1e-9;
THE END






暂无评论内容