JavaScript如何实现基于上一次计算结果累加对应百分比的功能
解决方案
你需要实现的是复利计算逻辑,我们可以把不同档位对应的涨幅提前按顺序定义,再基于初始值累计相乘即可,代码示例如下:
(function () { // 仅处理fieldname5等于18的场景,其他业务场景可自行扩展判断 if (fieldname5 !== 18) return; // 档位对应涨幅配置,索引和fieldname6的取值1-5一一对应 const rateList = [, 0, 5.30, 5.20, 5.10, 5.00]; let calculateResult = fieldname38; // 从第2档开始累计复利计算到当前选中的档位 for (let level = 2; level <= fieldname6; level++) { calculateResult = calculateResult * (1 + rateList[level] / 100); } // 保留2位小数返回,不需要精度限制可直接返回calculateResult return Number(calculateResult.toFixed(2)); })()
验证说明
以你给出的示例测试:
- fieldname38初始值为20000,fieldname6=2时,计算结果为20000 * 1.053 = 21060
- fieldname6=3时,在上一步结果基础上计算:21060 * 1.052 = 22155.12,和需求一致
后续如果要调整档位、涨幅,直接修改rateList数组即可,不需要维护大量if分支判断。
内容的提问来源于stack exchange,提问作者DoomneT
相关产品推荐
相关产品推荐

