2

ローンの金額、金利、年数に基づいて毎月の返済額を計算しようとしています。

私は次のことを思いつきましたが、私の計算とインターネット上の他のローン計算機との間には違いがあるようです. 私のテスト データは、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;

使用している数式は正しいですか、それともエラーがありますか?

どんな助けでも大歓迎です。

どうもありがとうございました

4

2 に答える 2

4

私は少し退屈だったので、インターネットから取得した月額料金の数式をNSDecimalNumberを使用するコードに入れました。

ご覧のとおり、NSDecimalNumbersを使用するのは非常に重要です。しかし、あなたは金融ソフトウェアを書いています、そしてあなたの顧客は正しい結果を期待しています。
そしてもう一度、マーカス・ザラスの記事「NS​​DECIMALNUMBERで怠惰にならないでください(私のように 」を紹介します。

楽しい。

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 に答える