用Java计算未来的投资额

时间:2015-05-27 01:44:46

标签: java floating-point finance

我试图用Java来计算未来的投资金额。 我的程序运行,但它没有给我正确的答案。

如果

  • investmentAmount是1000.56,
  • 利率为4.25,
  • 年数为1,
  • 答案应该是$ 1043.92。

我们必须使用的公式是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);
    }
}

4 个答案:

答案 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程序有两个问题:

  1. 缺乏理解问题(请善意,从积极的角度来看待这个建议。如果我们正确理解问题,我们非常接近其正确的编程解决方案。)
  2. 未来投资价值公式(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);

    1. 第二个问题是缺乏对Java编程语言结构/逻辑错误的理解。无论如何;不要紧。从技术上讲,这是一个编程错误,因此需要进行整改。
    2. 正如上面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)的原则,我们肯定会得到正确和准确的答案,我们的任何样本问题给定值;如预期的那样。

      快乐编程。