【发布时间】:2011-07-25 13:32:39
【问题描述】:
这就是我得到的。不同帐户类型(储蓄、当前和固定)的客户类对象的链接列表。每个客户对象都有一个交易链接列表(另一个类)作为属性。可以进行两种类型的交易,即借记(取款)或贷记(存款)。给定:一个储蓄账户可以变成负数,而其他两个账户不能。不允许从固定账户进行借记交易(禁止提款)。
如果账户余额为正,则利率为 0.0003,而如果账户余额为负(仅适用于储蓄账户),利率为 -0.002。利息计算如下:
对于正利息,它基于拥有的资金 过去 24 小时(即从午夜到午夜)在帐户中。例如,如果 您在第 0 小时有 100 美元,但您在第 1 小时提取了 50 美元并存回了 50 美元 在第 2 小时,您将被视为 24 小时内只有 50 美元留在您的帐户中 当天(24 小时)。在 24 小时,您帐户中的资金将是 100 美元加上每日 利息按 50 美元计算。
对于负利息,它基于您所欠的最大负金额的总和 那天的银行。如果你从银行借钱,他们会向你收取利息 即使您在 1 分钟后还钱。例如,如果您的储蓄账户有 0 小时 100 美元,但您在 22 小时提取 200 美元,然后在 1 小时存入 1000 美元 23. 您将不会在今天午夜之前获得任何正利息,但将收取 今天从银行借 100 美元的负利率。
对于初始金额为 566.00 美元的储蓄账户,该账户的交易如下: 借:50(日期:11-09-2008),借:500(15-09-2008);信用:200(22-09-2008);借方:500(2008 年 9 月 23 日)。
样本计算如下:
(((566*1.0003^10-50)*1.0003^4-500)*1.0003^8+200-500)*1.002^8 ~= 286.17。
我得到了一些 1377.68 的数字,显然不匹配。
这是我的储蓄账户,但我很确定这是错误的。我的问题是如何在遍历每个客户的交易时计算利息。我的计算是错误的。所以如果有人可以帮助我解决逻辑,我将不胜感激
public void update(double rate){ // Savings account interest calc
Transactions ctr = new Transactions();
Node<Transactions> counter = new Node<Transactions>(ctr);
counter=this.trans.head;
int i=0;
double negRate = -0.002;
double posRate = 0.0003;
double updatedBal = this.get_balance();
while(counter!=null){
if (updatedBal >0){
if(trans.getItem(i).AccType.equals("Crebit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ posRate),exponent-1))+trans.getItem(i).get_Amount());
}
else if(trans.getItem(i).AccType.equals("Debit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ posRate),exponent-1))-trans.getItem(i).get_Amount());
}
}
else
{
if(trans.getItem(i).AccType.equals("Crebit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ negRate),exponent-1))+trans.getItem(i).get_Amount());
}
else if(trans.getItem(i).AccType.equals("Debit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ negRate),exponent-1))-trans.getItem(i).get_Amount());
}
}
counter=counter.next;
}
this.set_balance(updatedBal);
}
【问题讨论】:
-
您的问题是什么?我预计如果您不采取补救措施,这将很快关闭。请记住,我们不是来做你的家庭作业/工作的。向我们展示您已经做出了一些努力,并清楚地说明了难以克服的编程挑战是什么。
-
啊抱歉,我误打了帖子问题。
-
在所有条件下如何计算利息...
-
“我的计算错误”是什么意思?您尝试了哪些数据,获得了哪些输出,与您的预期有何不同?
标签: java