Расчет продолжительности инвестиций в Java с использованием простой формулы процента
Таким образом, задача, которую я пытаюсь выполнить, состоит в том, чтобы найти количество лет, необходимое для того, чтобы директор достиг определенной стоимости. скажем, например, я начинаю с 5000 долларов и хочу накопить 15000 с 10% процентной ставкой в год. Я хочу узнать, как долго продлится эта инвестиция
это то, что я сделал до сих пор
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
как распечатать только последнюю строку?
3 ответа
Вам нужно использовать цикл (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 лет в результате. Если вы хотите рассчитать это, вы должны использовать решение Генри.
Самое простое решение - немного математики:
Math.log(goal/start) / Math.log(1+rate/100.0)
где goal
а также start
сумма в конце и в начале соответственно и rate
процентная ставка в процентах.
Здесь много неправильного... Во-первых, ваше утверждение 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 напрямую.