步骤 2 : 复利公式 步骤 3 : html部分 步骤 4 : 答案 <style>
table{
 border-collapse:collapse;
}
td{
  border:1px silver solid;
  padding: 5px;
  font-size:12px;
}
input{
  width:180px;
}
</style>
<script>
    function getUrlParms(name){
           var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
           var r = window.location.search.substr(1).match(reg);
           if(r!=null){
               var result = unescape(r[2]);
	       var reg = new RegExp('%',"g");//g,表示全部替换。
	       result= result .replace(reg,"");
               return result;
           }
           return null;
    }
/*取幂函数*/
function p(base, power){
	if(1==power)
	   return base
	if(0==power)
	   return 1;
	var result = base;
	for(var i = 0; i<power-1; i++){
		result = result*base;
	}
	return result;
}
/*取复利*/
function fuli(rate, year){
	var result = 0;
	for(var i=year;i>0;i--){
	  result+=p(rate,i);
	}
	return result;
}
function calc(){
	var initMoney= getNumberValue("initMoney");
	var rate= getNumberValue("rate") +0.0;
	var year= getNumberValue("year");
	var each= getNumberValue("each");
	var sum1 = (year-1)*each+initMoney;
	var sum3=each* fuli(  (1+rate/100),(year-1)) + initMoney*p( (1+rate/100) ,year);
	
	var sum2 = sum3-sum1;
	setValue("sum1",sum1);
	setValue("sum2",sum2);
	setValue("sum3",sum3);
}
function setValue(id,value){
	document.getElementById(id).value=value;
}
function getNumberValue(id){
	return parseFloat(document.getElementById(id).value);
}
</script>
<table>
<tr>
  <td>起始资金</td>
  <td><input type="text" id="initMoney" value='10000'> ¥</td>
<tr>
  <td>每年收益</td>
  <td><input type="text" id="rate" value='5'> %</td>
</tr>
<tr>
  <td>复利年数</td>
  <td><input type="text" id="year" value='10'> 年</td>
</tr>
<tr>
  <td>每年追加资金</td>
  <td><input type="text" id="each" value='10000'> ¥</td>
</tr>
<tr>
   <td colspan="2" align="center"><input type="button" value="计算" onclick="calc()"></td>
</tr>
<tr>
  <td>本金和</td>
  <td><input type="text" id="sum1" disabled="disabled"  value='0'> ¥</td>
</tr>
<tr>
  <td>利息和</td>
  <td><input type="text" id="sum2"  disabled="disabled" value='0'> ¥</td>
</tr>
<tr>
  <td>本息和</td>
  <td><input type="text" id="sum3"  disabled="disabled" value='0'> ¥</td>
</tr>
</table>
<script>
var rate = getUrlParms("rate");
if(null!=rate){
    rate = new Number(rate);
    rate = rate.toFixed(2);
    document.getElementById("rate").value=rate;
    document.getElementById("each").value=0;
    calc();
}
</script>
 
								
										
									
								
							
 
					复利公式: 
					
				F = p* ( (1+r)^n ); F 最终收入 p 本金 r 年利率 n 存了多少年 假设情景一: p = 10000 r = 0.05 n = 1 解读: 本金是10000 年利率是5% 存了一年 1次 复利收入 10000*( (1+0.05)^1 ) = 10500 假设情景二: p = 10000 r = 0.05 n = 2 解读: 本金是10000 年利率是5% 存了两年 复利收入 10000*( (1+0.05)^2 ) = 11025 <style>
table{
 border-collapse:collapse;
}
td{
  border:1px silver solid;
  padding: 5px;
  font-size:12px;
}
input{
  width:80px;
}
</style>
<table>
<tr>
  <td>起始资金</td>
  <td><input type="text" id="initMoney" value='0'> ¥</td>
</tr>
<tr>
  <td>每年收益</td>
  <td><input type="text" id="rate" value='0'> %</td>
</tr>
<tr>
  <td>复利年数</td>
  <td><input type="text" id="year" value='1'> 年</td>
</tr>
<tr>
  <td>每年追加资金</td>
  <td><input type="text" id="each" value='0'> ¥</td>
</tr>
<tr>
   <td colspan="2" align="center"><input type="button" value="计算" ></td>
</tr>
<tr>
  <td>本金和</td>
  <td><input type="text" id="sum1" disabled="disabled"  value='0'> ¥</td>
</tr>
<tr>
  <td>利息和</td>
  <td><input type="text" id="sum2"  disabled="disabled" value='0'> ¥</td>
</tr>
<tr>
  <td>本息和</td>
  <td><input type="text" id="sum3"  disabled="disabled" value='0'> ¥</td>
</tr>
</table>
 
								
										
									
								
							
 <style>
table{
 border-collapse:collapse;
}
td{
  border:1px silver solid;
  padding: 5px;
  font-size:12px;
}
input{
  width:180px;
}
</style>
<script>
/*取幂函数*/
function p(base, power){
	if(1==power)
	   return base
	if(0==power)
	   return 1;
	var result = base;
	for(var i = 0; i<power-1; i++){
		result = result*base;
	}
	return result;
}
/*取复利*/
function fuli(rate, year){
	var result = 0;
	for(var i=year;i>0;i--){
	  result+=p(rate,i);
	}
	return result;
}
function calc(){
	var initMoney= getNumberValue("initMoney");
	var rate= getNumberValue("rate") +0.0;
	var year= getNumberValue("year");
	var each= getNumberValue("each");
	var sum1 = (year-1)*each+initMoney;
	var sum3=each* fuli(  (1+rate/100),(year-1)) + initMoney*p( (1+rate/100) ,year);
	
	var sum2 = sum3-sum1;
	setValue("sum1",sum1);
	setValue("sum2",sum2);
	setValue("sum3",sum3);
}
function setValue(id,value){
	document.getElementById(id).value=value;
}
function getNumberValue(id){
	return parseFloat(document.getElementById(id).value);
}
</script>
<table>
<tr>
  <td>起始资金</td>
  <td><input type="text" id="initMoney" value='10000'> ¥</td>
<tr>
  <td>每年收益</td>
  <td><input type="text" id="rate" value='5'> %</td>
</tr>
<tr>
  <td>复利年数</td>
  <td><input type="text" id="year" value='10'> 年</td>
</tr>
<tr>
  <td>每年追加资金</td>
  <td><input type="text" id="each" value='10000'> ¥</td>
</tr>
<tr>
   <td colspan="2" align="center"><input type="button" value="计算" onclick="calc()"></td>
</tr>
<tr>
  <td>本金和</td>
  <td><input type="text" id="sum1" disabled="disabled"  value='0'> ¥</td>
</tr>
<tr>
  <td>利息和</td>
  <td><input type="text" id="sum2"  disabled="disabled" value='0'> ¥</td>
</tr>
<tr>
  <td>本息和</td>
  <td><input type="text" id="sum3"  disabled="disabled" value='0'> ¥</td>
</tr>
</table>
 
								
										
									
								
							
 
				HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
			 
			 
			
			
			
			
			
		
		
		
		 	问答区域     
		 	
				
		  
	 
	  		
	  
	  	2024-07-26
	  		
	  				
	  					 
	  
					
						JS 实现复利计算功能 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  
 
1 个答案 
	 
星辰220 跳转到问题位置 答案时间:2025-04-06 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    
    <table>
        <tr>
            <td class="normal">起始资金</td>
            <td class="normal"><input type="text" id="p">¥</td>
        </tr>
        <tr>
            <td class="normal">每年收益</td>
            <td class="normal"><input type="text" id="r">%</td>
        </tr>
        <tr>
            <td class="normal">复利年数</td>
            <td class="normal"><input type="text" id="nian">年</td>
        </tr>
        <tr>
            <td class="normal">每年追加资金</td>
            <td class="normal"><input type="text" id="pn">¥</td>
        </tr>
        <tr>
            <td colspan="2">
                <button>计算</button>
            </td>
        </tr>
        <tr>
            <td class="normal">本金和</td>
            <td class="normal"><input type="text" id="sumP">¥</td>
        </tr>
        <tr>
            <td class="normal" class="normal">利息和</td>
            <td class="normal"><input type="text" id="sumR">¥</td>
        </tr>
        <tr>
            <td class="normal">本息和</td>
            <td class="normal"><input type="text" id="sumPR">¥</td>
        </tr>
        
    </table>
<script src="script.js">
</script>
</body>
</html>
td {
    border: 1px solid black;
    width: 250px;
    height: 50px;
}
table {
    border-collapse: collapse;
}
button {
    width: 250px;
    height: 35px;
    display: block;
    margin: 0 auto;
}
.normal {
    padding: 8px;
}
var p; //起始本金
var F; //最终收入
var r; //年利率
var n; //存了多少年
var pn; //每年追加本金
var sumP; //本金和
var sumR; //利息和
var sumPR; //本息和+
function Fjisuan(p, r, n, pn)  {
    let nianzhongshouru;
    let diyinian;
    let lixihe;
    let benjinhe;
    diyinian = p * Math.pow((1 + r), n);
    nianzhongshouru = diyinian;
    for (let i = 1; i < n; i++) {
        nianzhongshouru += pn * Math.pow((1 + r), (n - i));
    }
    benjinhe = p + pn * (n-1);
    lixihe = nianzhongshouru - benjinhe;
    return [benjinhe, lixihe, nianzhongshouru];
}
document.getElementsByTagName('button')[0].addEventListener('click', function () {
    p = document.getElementById('p').value;
    r = document.getElementById('r').value;
    n = document.getElementById('nian').value;
    pn = document.getElementById('pn').value;
    p = parseFloat(p);
    r = parseFloat(r);
    n = parseInt(n);
    pn = parseFloat(pn);
    r = r / 100;
    let res = Fjisuan(p, r, n, pn);
    document.getElementById("sumP").value = res[0];
    document.getElementById("sumR").value = res[1];
    document.getElementById("sumPR").value = res[2];
});
 
		
							
		
		
		
		
	
	
	
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2022-04-04
	  		
	  				
	  					 
	  
					
						JavaScript 阶段性练习-3 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  
 
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2022-01-21
	  		
	  				
	  					 
	  
					
						完成 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  
	  		
	  
	  	2021-05-18
	  		
	  				
	  					 
	  
					
						不说了,站长代码都没我快 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  
	  		
	  
	  	2021-04-01
	  		
	  				
	  					 
	  
					
						答案 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 27 条以前的提问,请 点击查看 
			
			提问之前请登陆
			
		 
		提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢	
	 
 | 
	|||||||||||||||||||