Я просто не могу найти правильный ответ, поэтому вот моя проблема: я хочу иметь возможность рассчитать индексацию ( положительный или отрицательный процент ) для price
и period
.
Ожидания:
Дело № 1
Цена: 1.000,00
Процент индексации: 5%
Расчет за 5 лет с положительным процентом:
1. 1000 x 5^0 = 1000
2. 1000 x 5^1 = 1050
3. 1000 x 5^2 = 1102,50
4. 1000 x 5^3 = 1157.625
5. 1000 x 5^4 = 1215,50625
Дело № 2
Цена: 1.000,00
Процент индексации: -5%
Расчет за 5 лет с отрицательным процентом:
1. 1000 x -5^0 = 1000
2. 1000 x -5^1 = 950
3. 1000 x -5^2 = 902,50
4. 1000 x -5^3 = 857,375
5. 1000 x -5^4 = 814,50625
Результаты:
И этот отрицательный процент идет не так, потому что мой код Java печатает это:
1000
-5000
-125000
15625000
1175690408
Мой код довольно прост, я думаю:
BigDecimal percentageValue = new BigDecimal("-5");
BigDecimal indexation = percentageValue.divide(ONE_HUNDRED).add(BigDecimal.ONE);
BigDecimal price = new BigDecimal("1000");
for (int i = 0; i < 5; i++)
{
price = price.multiply(indexation.pow(i));
System.out.println(price.intValue());
}
Решение:
static final BigDecimal ONE_HUNDRED = new BigDecimal("100");
public static void main(String[] args)
{
BigDecimal percentageValue = new BigDecimal("-5");
BigDecimal indexation = percentageValue.divide(ONE_HUNDRED).add(BigDecimal.ONE);
BigDecimal price = new BigDecimal("1000");
for (int i = 0; i < 5; i++)
{
BigDecimal result = price.multiply(indexation.pow(i));
System.out.println(result);
}
}