因此,我尝试做的任务是找出委托人达到某个值所需的年数。比方说,例如我从5000美元开始,我希望以10%的利率/年累积15000美元。我想知道该投资的持续时间有多长
这是我到目前为止所做的事情
package com.company;
import java.util.Scanner;
public class InvestmentDuration {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println ("Initial Investment: ");
double investment = input.nextDouble();
System.out.println ("Rate as decimals: ");
double rate = input.nextDouble();
System.out.println ("Future Value: ");
double FutureValue = input.nextDouble();
double T = 0; //Initialise Duration//
double EndValue = investment * Math.pow ((1+rate), T); //Formula of Simple Interest//
while (EndValue < FutureValue) {
T += 1.0;
if (investment * Math.pow((1 + rate), T) == FutureValue);
System.out.println("The Number of years it takes to accumulate $" + FutureValue + " is " + T + " years");
}
}
输出:
The Number of years it takes to accumulate $15000.0 is 1.0 years
The Number of years it takes to accumulate $15000.0 is 2.0 years
The Number of years it takes to accumulate $15000.0 is 3.0 years
The Number of years it takes to accumulate $15000.0 is 4.0 years
The Number of years it takes to accumulate $15000.0 is 5.0 years
The Number of years it takes to accumulate $15000.0 is 6.0 years
The Number of years it takes to accumulate $15000.0 is 7.0 years
The Number of years it takes to accumulate $15000.0 is 8.0 years
The Number of years it takes to accumulate $15000.0 is 9.0 years
The Number of years it takes to accumulate $15000.0 is 10.0 years
The Number of years it takes to accumulate $15000.0 is 11.0 years
The Number of years it takes to accumulate $15000.0 is 12.0 years
如何仅打印最后一行?
答案 0 :(得分:3)
最简单的解决方案是使用一些数学:
Math.log(goal/start) / Math.log(1+rate/100.0)
其中goal
和start
分别是结尾和开头的金额,rate
是利率(百分比)。
答案 1 :(得分:1)
您需要使用循环(for
或while
)。在此循环中,您可以递增年份并计算新值。
请注意,我对变量进行了一些更改:
T
的类型为int
EndValue
和FinalValue
更改为endValue
和finalValue
。 Java命名约定是camelCase,变量名的首字母很小。years
比T
更好,但这是我的个人观点。如果您决定留在T
,至少应该是一个小写字母t
然后您可以使用以下代码。将endValue保存在变量中并不是必需的,因为它只使用一次。所以它可以内联。但我决定接近你的问题。
int years = 0;
double endValue = investment;
while (endValue < futureValue) {
years++;
endValue = investment * Math.pow((1 + rate), years);
}
您应该知道,在此循环之后,年数是endValue
大于或等于futureValue的全年数。这意味着你不可能有3.5年的结果。如果你想计算,你应该使用亨利的解决方案。
答案 2 :(得分:0)
这里很不错...... 首先,你的IF语句:它没有动作,因为你用分号关闭了它。此外,最终值不太可能等于未来的估值,部分原因在于浮点精度,部分原因是不可能是整数年。 所以我会尝试类似的东西:
double T = 0.0;
while(investment * Math.pow ((1+rate), T) < FutureValue) {
T += 1.0;
}
System.out.println ("The Number of years it takes to accumulate the Future Value is: " +T+);
或者你可以重新设定公式来直接计算T。