第十二週盧文玲 教你金融計算

躉繳第1期第2期第3期第4期

注意,包含首期躉繳的現金流量都大於0。

報酬率:

淨現值:

迴圈次數:

盧文玲向劉任昌學習的程式碼

盧文玲向劉任昌學習的程式碼

<style>
.Takming {
border: 20px outset yellow;
background-color: green;
color: white;
text-align: center; }
.pmt {
  width: 80pt;         
  height: 20pt;        
  background-color: coral; 
  color: black;        
  text-align: right;}   
.pig {
  width: 80pt;         
  height: 20pt;        
  background-color: purple; 
  color: white;        
  text-align: right;}   
</style><!-- 寬度width, 高度height, 背景顏色, 文字顏色, 文字排列text-align -->
<table border=1>
  <tr align=center><td>躉繳</td><td>第1期</td><td>第2期</td><td>第3期</td><td>第4期</td></tr>
  <tr><td><input type="number" class="pmt"></td>
    <td><input type="number" class="pmt"></td>
    <td><input type="number" class="pmt"></td>
    <td><input type="number" class="pmt"></td>
    <td><input type="number" class="pmt"></td></tr>
  </table><br>
注意,包含首期躉繳的現金流量都大於0。
<p><input type="button" value="計算內部報酬率" onclick="IRR()"></p> <!-- 按下 button 去執行 JavaScript IRR( )-->
<p>報酬率:<b id="irr" class="pig"></b></p>
<p>淨現值:<b id="npv" class="pig"></b></p>
<p>迴圈次數:<b id="loopNumber" class="pig"></b></p>
<!--paragragh 輸出計算結果-->

<script>
const period=5;  //pmt class 被陣列儲存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>
<h1 class="Takming">林育芳向劉任昌學習的程式碼</h1>

留言

  1. 我利用 copy 妳貼出的程式碼,也可以在我的網頁上執行出相同功能!妳愈來愈厲害了!持續學下去,妳們可以變成程式設計女神!

    回覆刪除

張貼留言

這個網誌中的熱門文章

盧文玲,損益表,EXCEL百分比PercentRank,每股盈餘,營業額,樞紐分析

德國

第十四週word+EXCEL recording macro 錄製巨集+金融計算