躉繳 | 第1期 | 第2期 | 第3期 | 第4期 |
注意,包含首期躉繳的現金流量都大於0。
報酬率:
淨現值:
迴圈次數:
蔣姿如向劉任昌學習的程式碼
<head>
<style>
.pmt {
width: 80pt;
height: 20pt;
background-color: coral;
color: black;
font-weight: bold;
text-align: right;
}
.pig {
width: 80pt;
height: 20pt;
background-color: lightblue;
color: black;
font-weight: bold;
text-align: right;
</style> <!--寬度width,高度height,背景珊瑚色background-color: coral,顏色color,文字排列text-align-->
</head>
<table border="1">
<tbody><tr align="center"><td>躉繳</td><td>第1期</td><td>第2期</td><td>第3期</td><td>第4期</td></tr>
<tr><td><input class="pmt" type="number" /></td>
<td><input class="pmt" type="number" /></td>
<td><input class="pmt" type="number" /></td>
<td><input class="pmt" type="number" /></td>
<td><input class="pmt" type="number" /></td></tr>
</tbody></table><br />
注意,包含首期躉繳的現金流量都大於0。
<p><input onclick="IRR()" type="button" value="計算內部報酬率" /></p> <!--按下 button 去執行 JavaScript IRR( )-->
<p>報酬率: <b class="pig" id="irr"></b></p>
<p>淨現值: <b class="pig" id="npv"></b></p>
<p>迴圈次數: <b class="pig" id="loopNumber"></b></p>
<!--paragragh 輸出計算結果-->
<script>
const period=5; //pmt class 被array 儲存0,1,2,3,4 constant常數
const maxerror = 0.000001;
var payment = new Array(period);
function IRR()
{
var a = 0;
var b = 1;
var c;
var f;
var gap=10;
var loopNumber = 0;
for (var i=0; i<period; i++)
payment[i]=document.getElementsByClassName("pmt")[i].value;
f = npv(a);
if ( f==0 )
document.getElementById("irr").innerHTML = "內部報酬率等於0.";
else if ( f<0 )
document.getElementById("irr").innerHTML = "內部報酬率小於0.";
else
{ while ( gap > maxerror && Math.abs(f) > maxerror && loopNumber < 100)
{
loopNumber++;
c = (a+b)/2;
f = npv(c);
if ( Math.abs(f) > maxerror && gap > maxerror)
{ if ( f>0 )
a = c;
else
b = c;
gap = b-a;
}
} //迴圈while結束
}
document.getElementById("irr").innerHTML= c; //輸出報酬率
document.getElementById("npv").innerHTML= f; //輸出淨現值
document.getElementById("loopNumber").innerHTML = loopNumber; //迴圈次數
}
var npv=function(rate)
{
var y= -payment[0];
for (var j=1; j<period; j++)
y = y + payment[j]/(1+rate)**j;
return y;
}
</script>
沒有留言:
張貼留言