OStack程序员社区-中国程序员成长平台

标题: iphone - 如何计算还款额 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 19:43
标题: iphone - 如何计算还款额

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

我想出了以下方法,但是我的计算与互联网上的其他贷款计算器之间似乎存在差异。我的测试数据是 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;

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

任何帮助将不胜感激。

非常感谢



Best Answer-推荐答案


我有点无聊,所以我把我从 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。

关于iphone - 如何计算还款额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721462/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4