2016-08-09 4 views
2

高度なPMT計算が必要です。私は実践のための例を与えられていますが、そのコードは私に正しい答えを与えますが、その例のためだけに機能します。Javascriptに基づく高度なPMT計算

HP 17bII計算機を使用して結果を確認していますが、同じ結果が必要です。

現在価値:PV - -1000

将来価値:FVから0

金利:IYRから8

周波数:FREQから12

支払回数:Nから60

アドバンスありません。支払い:ADVから3

これらの値とPMT19.88である期待される結果は、です。関数は、2つの他の関数を呼び出す計算するための式において

SPPVUSPV。下記のように動作します。

PV = -10000;   //Present Value 
FV = 0;    //Future Value 
IYR = 8;    //Interest Rate 
FREQ = 12;    //Payment Frequency 
ADV = 3;    //No. of advance payments 
TERM = 57;    //Term of the Loan 
N = 57 + 3;   //The N is the sum of ADV + TERM 

SIR = IYR/FREQ;   //Interest rate for the SPPV var 
UIR = (IYR/100)/FREQ; //Interest rate for the USPV 

SPPV = (1/(Math.pow(((1 + SIR)/100), N))); 
USPV = (Math.pow((1 + UIR), TERM) - 1)/(UIR*Math.pow((1+UIR), TERM)); 

PMT = Math.abs((PV - FV * SPPV)/(USPV + ADV)); 

すべての任意の助けいただければ幸いです。申し訳ありませんが重複している場合は、私は広範囲に検索しました。

ありがとうございました!

+0

「それはその例でのみ有効です」 - これはどういう意味ですか?具体的に、あなたが持っているすべての情報を含めてください。何かが「うまくいかない」と入力することは役に立ちません。 *どのように動作しませんか?インプットは何ですか?アウトプットは何ですか?そして何が期待されましたか?これらの3つの情報は、アルゴリズムが失敗する箇所を特定するために必要です。 – Mjh

答えて

2

どこが間違っているのか分かりました。これは私の更新されたコードです。 USPV var Nに変更の問題でした。私はとてもばかげている。

 SIR = IYR/FREQ; 
     UIR = (IYR/100)/FREQ; 
     N = ADV + TERM; 

     SPPV = 1/(Math.pow((1 + (SIR/100)), N)); 
     USPV = (Math.pow(1 + UIR, TERM) - 1)/(UIR * (Math.pow(1 + UIR, TERM))); 

     PMT = Math.abs((PV - FV * SPPV)/(USPV + ADV)); 
+0

ここのUSPVはあなたの質問にあるものとまったく同じです。 ** SPPV **の計算方法を変更しました(正しく、私は推測します)。 –

関連する問題