我试图用Java来计算未来的投资金额。 我的程序运行,但它没有给我正确的答案。
如果
我们必须使用的公式是futureInvestmentValue = investmentAmount * (1 + monthlyInterestRate) ^ numberOfYears * 12
以下是我的课程
// Import Java Scanner
import java.util.Scanner;
public class Ex_2_21 {
public static void main(String[] args) {
//Create a Scanner object
Scanner input = new Scanner(System.in);
//Prompt the user to enter investment amount, annual interest rate, and number of years
System.out.println("Enter investment amount:");
System.out.println("Enter annual interest rate:");
System.out.println("Enter number of years:");
float investmentamount = input.nextFloat();
float interestrate = input.nextFloat();
float numberofyears = input.nextFloat();
float years = numberofyears * 12;
//Formula to calculate the accumulated value
float futureInvestmentValue = (float) (investmentamount * Math.pow((years), 1 + interestrate));
//Print result
System.out.println("The accumulated value is " + futureInvestmentValue);
}
}
答案 0 :(得分:1)
当您指月数时,您会使用年数(相当于年数* 12),并且您根本不使用月利率。将年利率(输入)除以12得到月利率(并确保它是一个分数,而不是一个百分比,所以如果他们进入4.25,则需要除以100得到.0425),并为月总持续时间引入一个新变量。然后(如Luiggi所说)交换参数顺序。
float futureInvestmentValue = (float) (investmentAmount * Math.pow(1 + monthlyInterestRate, months));
答案 1 :(得分:1)
除了@Luiggi所说的,您是否认为如果它是4.25利率,即425%的利率,您想要的是1 + 0.0425
答案 2 :(得分:0)
问题在于:
Math.pow((years), 1 + interestrate)
应该是
Math.pow(1 + interestrate, years)
如Math#pow(double a, double b)
中所述:
<强>参数:强>
a
- 基地
b
- 指数<强>返回强>
值a b
答案 3 :(得分:0)
上面给出的Java程序有两个问题:
未来投资价值公式(A)如下:
a)每年复合:
A = P *(1 + R)^ N
其中,A =未来价值,P =投资的原始金额,R =利率(以%表示,在计算中用作R / 100),N =复合利率适用的时间段(以年为单位)< / p>
b)每月复合:
A = P *(1+(R / 12))^(N * 12)
其中,A =未来价值,P =投资的原始金额,R =每月利率(以%表示,在计算中使用为R / 100,不是年利率),N =复利的时间段适用的费率(以年为单位)
根据给定样本问题的值,我们发现为了计算未来的投资价值,我们应该使用公式(b)。
所以,在上面给出的Java程序中,为了合并这个修正,我们需要在感兴趣的变量声明行之后再添加一个语句:
interestrate = interestrate /(100 * 12);
正如上面Luiggi Mendoza所建议的那样,如果我们想用Java编程语言表达数学表达式A ^ B那么我们必须使用java.lang.Math.pow()方法,语法如下:
public static double pow(双A,双B)
因此,再次w.r.t给定Java程序,要结合第二次更正,我们必须简单地更正声明futureInvestmentValue变量并使用Math.pow()方法的行;如下:
float futureInvestmentValue =(float)(investmentamount * Math.pow(1 + interestrate,years));
结合这两个更正,我们使解决方案正确。基于GIGO(Garbage In Garbage Out,Gold In Gold Out)的原则,我们肯定会得到正确和准确的答案,我们的任何样本问题给定值;如预期的那样。
快乐编程。