gpt4 book ai didi

java - 利息计算

转载 作者:行者123 更新时间:2023-12-01 05:47:57 25 4
gpt4 key购买 nike

这就是我得到的。不同账户类型(储蓄、当前和固定)的 Customer 类对象的 linkedList。每个 Customer 对象都有一个交易 LinkedList(另一个类)作为属性。可以进行 2 种类型的交易,即借记(提款)或贷记(存款)。给定:一个储蓄账户可以变为负数,而其他两个账户则不能。不允许从固定账户进行借记交易(不允许提款)。

如果账户余额为正,则利率为 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(日期:2008年9月11日),借方:500(2008年9月15日);信用: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);
}

最佳答案

您的代码有两个地方 trans.getItem(i).AccType.equals("Crebit") 。想必这应该是Credit。如果交易项目的 AccType 字段的值使用正确的拼写,那么您的 if block 在计算利息时将不会“看到”信用交易,这可能会导致错误的答案。

关于java - 利息计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477716/

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