求计算思路。
需求:
有一个投资产品(投资周期1年,到期赎回),收益率是这样的:
例如 我2015年5月10号投资10万,2016年5月9号满一年,我能够获得10万+10万*0.13 = 113000
现在有这么个需求:累计收益率。
就是比如我第一笔投资10万,收益率是13%
然后在第一笔赎回之前的时间内比如2015年8月15号,我又投资了一笔45万。如果按照原来的规定,这笔45万的投资收益率还是13%。
现在要求看这个用户的累计在投的投资,也就是在第二笔投资时,第二笔的年化收益率要按照投资金额10万+45万= 55万,也就是13.5%来算,同时第一笔投资在第二笔投资的第二天,年化收益率也要变成13.5%。
同样,在第一笔投资赎回之后(2016.5.9之后),第二笔投资的收益率要变回13%。
现在要计算用户的累计收益。
投资记录全部存储在投资记录表中(字段包括投资编号、投资金额、投资时间、结束时间、年化收益率)
我想了很久,好像很复杂(每新投资一笔都有可能影响到之前所有投资的收益率区间)。一笔投资好算,两笔投资可能要算3次,三笔投资可能要算5次。
不论用什么语言描述都可以,主要是求解决思路。
考虑一种思路.大致的数据格式如下(不知道怎么搞表格,见谅)
金额 10W
年华率1 5day
年化率2 100day
年化率3 36day
每天计算一次,当天的总额是处于哪个年化率区间,就在对应的字段上面+1day.这样只要在结算周期结束的时候,根据不同的年化率所处的天数进行收益计算就可以了.
在客户投资、撤资之后,对数据库该客户对应的投资金额进行加减,再比对累计投资金额,调整相应收益率