如何计算还款额

时间:2012-03-15 14:10:30

标签: iphone objective-c ios nsdecimalnumber

嘿我试图根据贷款金额,利率和年数来计算每月还款。

我已经提出以下建议,但是我的计算与互联网上的其他贷款计算器之间似乎存在差异。我的测试数据是1000美元的贷款金额,1年期间的5%利息。这给了我每月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;

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

任何帮助都将不胜感激。

非常感谢

2 个答案:

答案 0 :(得分:4)

我有点无聊,所以我将internet中的每月费率公式放入使用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。

答案 1 :(得分:0)

这是您计算每月付款的方式。

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

我建议也使用NSDecimalNumbers。