gpt4 book ai didi

javascript - 每月与存款复利

转载 作者:行者123 更新时间:2023-11-29 15:56:19 24 4
gpt4 key购买 nike

我想每周/每两周/每月/每年复利一次。

我还想要一个可以添加存款金额的选项。

我已经尝试过计算最终应计金额的标准公式,如下所示:

formula
(来源:gstatic.com)

例如,这是我计算每周复利的方法:

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;
}

感谢您的帮助!

最佳答案

这应该做你想做的:

const range = (min, max) => {

const size = 1 + max - min

return [...Array(size).keys()].map(n => n + min)
}

const weeksInAYear = 52

const addWeeklyInterest = interestRatePerWeek => (savings, _) => savings + savings * interestRatePerWeek

const calculateTotal = (savings, numberOfYears, interestRatePerWeek) => {

const numberOfWeeks = numberOfYears * weeksInAYear

return range(1, numberOfWeeks).reduce(addWeeklyInterest(interestRatePerWeek), savings)
}

console.log(calculateTotal(1000.00, 1, 0.02))

输出为 2800.328185448178。出于显示目的,您可能希望将其四舍五入,但也请记住,如果准确性很重要,则不能使用 float 。

关于javascript - 每月与存款复利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57642627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com