2

嘿,我正在尝试根据贷款金额、利率和年数计算每月还款额。

我想出了以下内容,但是我的计算与互联网上的其他贷款计算器之间似乎存在差异。我的测试数据是 1000 美元的贷款金额,5% 的利息,为期 1 年。这给了我 85.61 的每月付款和 1027.29 的总付款

这是计算这个的代码。

    double LoanAmount = la; //loan amount
    double InterestRate = ir; //interest rate
    double NumberOfYears = noy; //number of years

    double interestRateDecimal = InterestRate / (12 * 100);
    double months = NumberOfYears * 12;
    double rPower = pow(1+interestRateDecimal,months);

    monthlyPayments = LoanAmount * interestRateDecimal * rPower / (rPower - 1);
    totalPayments = monthlyPayments * months;
    yearlyPayments = monthlyPayments * 12;
    totalInterest = totalPayments - LoanAmount;

我使用的公式是正确的还是有错误的?

任何帮助,将不胜感激。

非常感谢你

4

2 回答 2

4

我有点无聊,所以我把从互联网上得到的月费公式放入使用NSDecimalNumber的代码中。

正如您将看到的,使用 NSDecimalNumbers 是一个很大的问题。但是您正在编写财务软件,而您的客户期望得到正确的结果。
再一次,我指的是 Marcus Zarras 的文章DON'T BE LAZY WITH NSDECIMALNUMBER (LIKE ME)

请享用。

NSDecimalNumber *loan = [NSDecimalNumber decimalNumberWithString:@"25000"];
NSDecimalNumber *annualInterestRate = [NSDecimalNumber decimalNumberWithString:@"6"]; // 6%
annualInterestRate = [annualInterestRate decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithString:@"100"]]; // 0.06 i.e. 6%
NSInteger numberOfPayments = 36;

// (loan * (interest / 12)) / (1 - (1 + interest / 12) ^ -number)
//          ^^^^^^^^^^^^^ temp1
// ^^^^^^^^^^^^^^^^^^^^^^^^ temp2
//                                      ^^^^^^^^^^^^^ temp1
//                                 ^^^^^^^^^^^^^^^^^^^ temp4 
//                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ temp5
//                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ temp6
NSDecimalNumber *temp1 = [annualInterestRate decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithString:@"12"]];
NSDecimalNumber *temp2 = [temp1 decimalNumberByMultiplyingBy:loan];
NSDecimalNumber *temp4 = [[NSDecimalNumber one] decimalNumberByAdding:temp1];
NSDecimalNumber *temp5 = [[NSDecimalNumber one] decimalNumberByDividingBy:[temp4 decimalNumberByRaisingToPower:numberOfPayments]];
NSDecimalNumber *temp6 = [[NSDecimalNumber one] decimalNumberBySubtracting:temp5];

NSDecimalNumber *monthlyRate = [temp2 decimalNumberByDividingBy:temp6];
NSLog(@"Monthly rate: %@", monthlyRate);

希望它是正确的。我通常不必处理 NSDecimalNumbers。

于 2012-03-15T16:06:33.040 回答
0

这就是您应该如何计算每月付款的方式。

NSDecimalNumber monthlyPayment = LoanAmount * interestRateDecimal / (1 - (pow(1/(1 + interestRateDecimal), months)));

我也建议使用 NSDecimalNumbers。

于 2012-03-15T14:17:55.820 回答