JavaScript年度加薪累计总薪资计算结果错误求助
问题分析与代码修正
你的代码逻辑错误在于累加方式不对,导致少算了第一年的薪资涨幅差额,最终结果偏差3000。以下是具体分析和修正方案:
错误根源
当前年龄25岁、退休年龄28岁,实际需要计算3年薪资(25、26、27岁),但你的代码逻辑:
num5 = 28-25-1 = 2,循环2次得到第三年薪资156060- 执行
answer = 150000*2 + 156060时,错误地将26岁的薪资按初始值150000累加,而非涨薪后的153000,直接少加了3000。
修正后的代码
正确逻辑是维护两个变量:一个存累计总薪资,一个存当年薪资,逐年累加并更新下一年薪资:
{ var currentSalary = this.getField("Salary").value; var increaseRate = this.getField("Increase").value / 100; var currentAge = this.getField("Age").value; var retirementAge = this.getField("Retirement").value; var totalYears = retirementAge - currentAge; var totalIncome = 0; for(var i = 0; i < totalYears; i++) { totalIncome += currentSalary; // 先累加当年薪资 currentSalary *= (1 + increaseRate); // 计算下一年的涨后薪资 } this.getField("Income Value").value = totalIncome; }
验证结果
代入参数测试:
- 第1年:累加150000 → 累计=150000,当前薪资更新为153000
- 第2年:累加153000 → 累计=303000,当前薪资更新为156060
- 第3年:累加156060 → 累计=459060,与正确结果完全一致
内容的提问来源于stack exchange,提问作者Aqil Mohammed
相关产品推荐
相关产品推荐

