Java 我如何计算和显示未来5年的投资价值
我相信我在这里犯了一个数学公式错误,代码似乎是有效的,但是数学结果完全错误了Java 我如何计算和显示未来5年的投资价值,java,Java,我相信我在这里犯了一个数学公式错误,代码似乎是有效的,但是数学结果完全错误了 publicstaticvoidmain(字符串[]args){ 扫描仪sam=新扫描仪(System.in); 系统输出打印(“输入初始投资:”); double principal=sam.nextDouble(); 系统输出打印(“输入初始速率:”); 双速率=sam.nextDouble(); System.out.print(“输入时间:”); 加倍时间=sam.nextDouble(); 比率=(1+(比率
publicstaticvoidmain(字符串[]args){
扫描仪sam=新扫描仪(System.in);
系统输出打印(“输入初始投资:”);
double principal=sam.nextDouble();
系统输出打印(“输入初始速率:”);
双速率=sam.nextDouble();
System.out.print(“输入时间:”);
加倍时间=sam.nextDouble();
比率=(1+(比率/100));
双倍利息=(本金*利率);
for(int i=1;i
输出:
enter initial investment: 1000
enter initial rate: 5
Enter the time: 5
year 1
interest: 1050.000000
value: 2050.000000
year 2
interest: 2152.500000
value: 3152.500000
year 3
interest: 3310.125000
value: 4310.125000
year 4
interest: 4525.631250
value: 5525.631250
问题似乎在于将比率设置为
1+比率/100
,即比率超过100%。此外,利息没有适当地计入本金
此外,最好避免在货币算术中使用double
因此,固定代码可能如下所示:
Scanner sam=新的扫描仪(System.in);
系统输出打印(“输入初始投资:”);
int principal=sam.nextInt()*100;//分钱
系统输出打印(“输入初始速率:”);
int Rate=sam.nextInt();//百分比
System.out.print(“输入时间:”);
int time=sam.nextInt();
利息=(本金*利率)/100;
for(int i=1;i
输出
enter initial investment: 1000
enter initial rate: 5
Enter the time: 5
year 1
interest: 50.0
value: 1050.0
year 2
interest: 52.5
value: 1102.5
year 3
interest: 55.12
value: 1157.62
year 4
interest: 57.88
value: 1215.5
好吧,多亏了@alex rudenko的回答,我成功地解决了这个问题 '''
Scanner sam=新的扫描仪(System.in);
系统输出打印(“输入初始投资:”);
double principal=sam.nextDouble();
系统输出打印(“输入初始速率:”);
双速率=sam.nextDouble();
System.out.print(“输入时间:”);
加倍时间=sam.nextDouble();
比率/=100.0;
双倍利息=(本金*利率);
for(int i=1;i
'''
输出:
输入初始投资:1000
输入初始速率:5
输入时间:5
第一年
利息:50.000000
价值:1050.000000
第二年
利息:52.500000
价值:1102.500000
第三年
利息:55.125000
价值:1157.625000
第四年
利息:57.881250
值:1215.506250我们可以看到一些输出吗?请添加更多详细信息我们如何猜测您的预期输出?添加的输出请解释逻辑并提及预期输出output@SamikSood本例中第一年的利息应为50.00(5%),而不是您计算的1050(105%)。
Scanner sam = new Scanner(System.in);
System.out.print("enter initial investment: ");
double principal = sam.nextDouble();
System.out.print("enter initial rate: ");
double Rate = sam.nextDouble();
System.out.print("Enter the time: ");
double time = sam.nextDouble();
Rate /= 100.0;
double interest = (principal * Rate);
for (int i=1; i < time; i++) {
System.out.printf("year %d \n", i);
System.out.printf("interest: %f \n", interest);
principal = (principal + interest);
interest = (principal*Rate);
System.out.printf("value: %f \n", principal);
}
}