尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

JavaScript避坑之计算丢失精度 - 从toFixed到Decimal.js

JavaScript避坑之计算丢失精度 - 从toFixed到Decimal.js 1. 浮点数精度陷阱最严重JavaScript 使用 IEEE 754 标准存储数字直接进行乘法运算会导致精度丢失。现象0.1 0.2不等于0.3而是0.30000000000000004。parseFloat(...) * parseFloat(...)。如果数量或单价小数位较多计算结果可能会出现类似19.99999999的情况即使后面加了.toFixed(2)也可能出现非预期的舍入例如1.335变成1.33而不是1.34。2. 类型转换冗余.toFixed(2) 返回的是字符串。如果 form 对象绑定在输入框上且输入框类型是 number存入字符串可能会导致类型警告或后续计算需要再次 parse3. 优化方案引入高精度库import Decimal from decimal.js原生JS修正先乘后除整数化。通过 Math.round() 进行四舍五入// (parseFloat(params01) * parseFloat(params02)).toFixed(2)cosnt qty parseFloat(params01)const price parseFloat(params02)const total Math.round(qty * price * 100) / 100;
返回列表