计算贷款利息和贷款期限。 Java的

时间:2017-10-26 07:58:02

标签: java

以下两种方法旨在计算贷款期限(必须支付的每月付款数量和贷款到期利息,给出r为月利率(APR)的参数, A是贷款金额(本金),P是月付款,N是需要付款的数量。但是这两种方法都没有正确计算。如何修复它们以便它们提供付款的月数必须做出并产生利息吗?

    public static double loanLength(double r, double A, double P){         

        double N = (Math.log(1 / (1 - ((r * A) / P)))) / Math.log(1 + r);
        return N;
   }  
    public static double loanInterest(double P, double N, double A){

        double I = ((P * N) - A);
        return I;
   }

2 个答案:

答案 0 :(得分:0)

根据您的示例输入,这只是一个算术错误。

double N = (Math.log(1 / (1 - ((r * A) / P)))) / Math.log(1 + r);中有一些计算。失败的(或NaN的结果)是Math.log(1 / (1 - ((r * A) / P)))

如果我们插入示例值:Math.log(1 / (1 - ((0.1 * 10000) / 500))),我们计算出来:

1. Math.log(1 / (1 - ((0.1 * 10000) / 500)))
2. Math.log(1 / (1 - (1000 / 500)))
3. Math.log(1 / (1 - 2))
4. Math.log(1 / -1)
5. Math.log(-1) // <-- here happens the error

未定义小于/等于0的数字的对数。所以你的等式错了

答案 1 :(得分:0)

This site解释说利率和付款必须在同一时期。

我猜你的情况是每年10%,而每月500。因此,您需要将10除以或乘以500乘以12以使它们组合在一起。否则,您的计算将为您提供每月或每年10%/ 500支付(或任何确实持续时间)的贷款期限,这是永远无法偿还的:在每个期间有1000个利息,但只有500个支付。

因此,log(-x)产生NaN,这意味着你永远无法偿还。