【发布时间】:2019-08-25 01:29:48
【问题描述】:
我想每周/每两周/每月/每年复利一次。
我还想要一个可以添加存款金额的选项。
我已经尝试过计算最终应计金额的标准公式,如下所示:
例如,这是我计算每周复利的方法:
function calculateWeekly(state: any) {
const { savings, deposit ,interest, timePeriodSelector, timePeriodLength } = state;
let numberOfYears = 0;
if (timePeriodSelector === "weekly") {
numberOfYears = timePeriodLength / weeksInAYear;
} else if (timePeriodSelector === "fortnightly") {
numberOfYears = (timePeriodLength / weeksInAYear) * 2;
} else if (timePeriodSelector === "monthly") {
numberOfYears = (timePeriodLength / weeksInAYear) * weeksInAMonth;
} else if (timePeriodSelector === "annually") {
numberOfYears = (timePeriodLength / weeksInAYear) * weeksInAYear;
}
const weeklyRate = interest / 100 / weeksInAYear;
const lengthOfCompunding = numberOfYears * weeksInAYear;
let startingFigure = parseInt(savings) + parseInt(deposit);
//total gets added on for every time cycle of week
let total =
(startingFigure * (Math.pow(1 + weeklyRate, lengthOfCompunding) - 1)) / weeklyRate;
return roundToTwoDP(total);
}
上述代码的问题是,每次产生利息时,存款都会被添加到计算中。因此,为期 10 周的每周 10 美元的押金实际上将加起来为 100 美元。
我在这里尝试了一种每周使用循环来累积利息的方法:
// loops how many times to compound the interest
for(let i = numberOfYears - (1/weeksInAYear); i > 0; i-= (1/weeksInAYear)){
let interestGained = (total * (Math.pow((1 + weeklyRate), lengthOfCompunding))) - total;
total += interestGained + savings;
}
感谢您的帮助!
【问题讨论】:
-
总计 += 获得的利息 + 储蓄;为什么每次都增加储蓄?
标签: javascript formula