复利计算器(软件工程)———郭志豪
Posted 36郭志豪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复利计算器(软件工程)———郭志豪相关的知识,希望对你有一定的参考价值。
计算:本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30
客户提出:
2.如果按照单利计算,本息又是多少呢?
3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?
代码如下:
1 public static void main(String[] args) { 2 // TODO Auto-generated method stub 3 System.out.println("欢迎使用复利计算器!"); 4 /* 5 * 复利计算公式: 6 * F=P*(1+i)N(次方) 7 F:复利终值 8 P:本金 9 i:利率 10 N:利率获取时间的整数倍 11 */ 12 Scanner input = new Scanner(System.in); 13 System.out.println("复利计算器:"); 14 System.out.println("本金按1 复利(单利)按2 ); 15 int num = input.nextInt(); 16 DecimalFormat df1 = new DecimalFormat("#.00"); 17 //求本金 18 if(num==1){ 19 System.out.println("请输入复利终值:"); 20 double F = input.nextDouble(); 21 System.out.println("请输入年利率:"); 22 double i = input.nextDouble(); 23 System.out.println("请输入存入年限:"); 24 int N = input.nextInt(); 25 double P = F/Math.pow(1+i, N); //本金 26 System.out.println("本金:"+df1.format(P)); 27 } 28 //求复利(单利) 29 if(num==2){ 30 System.out.println("请输入存入本金:"); 31 double P = input.nextDouble(); 32 System.out.println("请输入年利率:"); 33 double i = input.nextDouble(); 34 System.out.println("请输入存入年限:"); 35 int N = input.nextInt(); 36 double D = P*(1+i*N); 37 System.out.println("单利终值:"+df1.format(D));//单利
38 System.out.println("请输入年复利次数:"); 39 int m = input.nextInt(); 40 double F = P*(Math.pow((1+i/m), N*m)); //复利 41 System.out.println("复利终值:"+df1.format(F)); 42 }
因为单利跟复利原理相同,所以求复利时会自动求出单利
客户又想:
4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?
代码如下:
1 package FuLi; 2 import java.util.*; 3 import java.math.*; 4 import java.text.DecimalFormat; 5 public class gzh { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 System.out.println("欢迎使用复利计算器!"); 10 /* 11 * 复利计算公式: 12 * F=P*(1+i)N(次方) 13 F:复利终值 14 P:本金 15 i:利率 16 N:利率获取时间的整数倍 17 */ 18 Scanner input = new Scanner(System.in); 19 System.out.println("复利计算器:"); 20 System.out.println("本金按1 复利(单利)按2 年限按3"); 21 int num = input.nextInt(); 22 DecimalFormat df1 = new DecimalFormat("#.00"); 23 //求本金 24 if(num==1){ 25 System.out.println("请输入复利终值:"); 26 double F = input.nextDouble(); 27 System.out.println("请输入年利率:"); 28 double i = input.nextDouble(); 29 System.out.println("请输入存入年限:"); 30 int N = input.nextInt(); 31 double P = F/Math.pow(1+i, N); //本金 32 System.out.println("本金:"+df1.format(P)); 33 } 34 //求复利(单利) 35 if(num==2){ 36 System.out.println("请输入存入本金:"); 37 double P = input.nextDouble(); 38 System.out.println("请输入年利率:"); 39 double i = input.nextDouble(); 40 System.out.println("请输入存入年限:"); 41 int N = input.nextInt(); 42 double D = P*(1+i*N); //单利 43 System.out.println("单利终值:"+df1.format(D)); 44 System.out.println("请输入年复利次数:"); 45 int m = input.nextInt(); 46 double F = P*(Math.pow((1+i/m), N*m)); //复利 47 System.out.println("复利终值:"+df1.format(F)); 48 }
//求所需年限 49 if(num==3){ 50 System.out.println("请输入存入本金:"); 51 double P = input.nextDouble(); 52 System.out.println("请输入复利终值:"); 53 double F = input.nextDouble(); 54 System.out.println("请输入年利率:"); 55 double i = input.nextDouble(); 56 int N = (int) ((Math.log(F)/Math.log(1+i))-(Math.log(P)/Math.log(1+i))); 57 System.out.println("所需年限为:"+N); 58 } 59 60 } 61 62 }
5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?
6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?
代码如下:
1 package FuLi; 2 import java.util.*; 3 import java.math.*; 4 import java.text.*; 5 public class gzh { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 System.out.println("欢迎使用复利计算器!--BY 郭志豪"); 10 /* 11 * 复利计算公式: 12 * F=P*(1+i)N(次方) 13 F:复利终值 14 P:本金 15 i:利率 16 N:利率获取时间的整数倍 17 */ 18 Scanner input = new Scanner(System.in); 19 System.out.println("复利计算器:"); 20 System.out.println("本金按1 复利(单利)按2 年限按3 利率按4 年金终值按5"); 21 int num = input.nextInt(); 22 DecimalFormat df1 = new DecimalFormat("#.00"); 23 //求本金 24 if(num==1){ 25 System.out.println("请输入复利终值:"); 26 double F = input.nextDouble(); 27 System.out.println("请输入年利率:"); 28 double i = input.nextDouble(); 29 System.out.println("请输入存入年限:"); 30 int N = input.nextInt(); 31 double P = F/Math.pow(1+i, N); //本金 32 System.out.println("所需本金为:"+df1.format(P)); 33 } 34 //求复利(单利) 35 if(num==2){ 36 System.out.println("请输入存入本金:"); 37 double P = input.nextDouble(); 38 System.out.println("请输入年利率:"); 39 double i = input.nextDouble(); 40 System.out.println("请输入存入年限:"); 41 int N = input.nextInt(); 42 double D = P*(1+i*N); //单利 43 System.out.println("单利终值:"+df1.format(D)); 44 System.out.println("请输入年复利次数:"); 45 int m = input.nextInt(); 46 double F = P*(Math.pow((1+i/m), N*m)); //复利 47 System.out.println("复利终值为:"+df1.format(F)); 48 } 49 //求所需年限 50 if(num==3){ 51 System.out.println("请输入存入本金:"); 52 double P = input.nextDouble(); 53 System.out.println("请输入复利终值:"); 54 double F = input.nextDouble(); 55 System.out.println("请输入年利率:"); 56 double i = input.nextDouble(); 57 int N = (int) ((Math.log(F)/Math.log(1+i))-(Math.log(P)/Math.log(1+i))); 58 System.out.println("所需年限为:"+N); 59 } 60 if(num==4){ 61 System.out.println("请输入存入本金:"); 62 double P = input.nextDouble(); 63 System.out.println("请输入复利终值:"); 64 double F = input.nextDouble(); 65 System.out.println("请输入存入年限:"); 66 int N = input.nextInt(); 67 double i = (Math.pow(F/P, 1.0/N))-1; 68 System.out.println("年利率为:"+i); 69 System.out.println("本金n年后是否会翻n番?是按1 否按2"); 70 int up = input.nextInt(); 71 if(up==1){ 72 System.out.println("请输入几年后:"); 73 int n = input.nextInt(); 74 System.out.println("翻几番:"); 75 int f = input.nextInt(); 76 double I = 72.0/(n/f); //72法则 77 System.out.println(n+"年后本金翻倍的年利率至少为:"+df1.format(I)); 78 } 79 if(up==2){ 80 System.out.println("欢迎再来!"); 81 }else{ 82 System.out.println("输入错误!"); 83 } 84 } 85 if(num==5){ 86 System.out.println("按年投资按1 按月投资按2 "); 87 int number = input.nextInt(); 88 if(number==1){ 89 System.out.println("要投资的本金:"); 90 double P = input.nextDouble(); 91 System.out.println("获得的年利率回报:"); 92 double i = input.nextDouble(); 93 System.out.println("投资年限(年):"); 94 double N = input.nextInt(); 95 96 double F = P*(Math.pow(1+i, N)-1)/i; 97 System.out.println("按年投资的年金终值为:"+df1.format(F)); 98 } 99 if(number==2){ 100 System.out.println("要投资的本金:"); 101 double P = input.nextDouble(); 102 System.out.println("获得的年利率回报:"); 103 double i = input.nextDouble(); 104 System.out.println("投资年限(年):"); 105 double N = input.nextInt(); 106 double F = P*(Math.pow(1+i/12.0, N*12)-1)/(i/12); 107 System.out.println("按月投资的年金终值为:"+df1.format(F)); 108 } 109 } 110 } 111 }