在js里 "+"是拼接字符串的,而不是逻辑运算符;
数据类型问题:
如果变量是字符串类型,+操作会变成字符串拼接而非数值相加4
建议使用Number()或parseFloat()进行显式转换:
javascript
Copy Code
const planRate = (Number(completedQuantity) / (Number(row.total_quantity) + Number(row.urgent_order_quantity))) * 100
除零错误防护:
当分母为0时会导致Infinity结果46
应增加防护逻辑:
javascript
Copy Code
const denominator = Number(row.total_quantity) + Number(row.urgent_order_quantity);
const planRate = denominator !== 0 ? (completedQuantity / denominator) * 100 : 0;
精度处理建议:
使用toFixed()控制小数位数6
javascript
Copy Code
const planRate = denominator !== 0 ? ((completedQuantity / denominator) * 100).toFixed(2) : 0;
特殊值处理:
建议增加null/undefined检测4
javascript
Copy Code
const safeValue = (val) => isNaN(Number(val)) ? 0 : Number(val);
const denominator = safeValue(row.total_quantity) + safeValue(row.urgent_order_quantity);
公式优化建议:
可参考完成率的标准计算公式:(已完成量/计划总量)×100%6
紧急订单量是否应计入分母需根据业务逻辑确认16
建议使用Chrome开发者工具的Console面板或Node.js环境进行分步调试,使用console.log输出中间变量值检查问题根源4。
版权属于:
wehg489
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)