gpt4 book ai didi

Java 投资返回率复合计算器

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:37:57 27 4
gpt4 key购买 nike

我一直在尝试制作一个接受以下内容的程序:

  1. 初始值(十亿)
  2. 增长率/年(十亿)
  3. 购买价格(十亿)

然后能够计算出达到投资收支平衡所需的年数。我已经能够使用蛮力算法完成此操作。

我想知道是否有一种方法可以更有效地做到这一点(以一种更类似于标准代数的方式)。

我的代码:

import java.util.Scanner;

public class ReturnOnInvestment {
public static double initialValue;
public static double growthRate;
public static double purchasePrice;

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(" Return on Investment Calculator ");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.print(" Starting Value (In Billions): ");
initialValue = input.nextDouble();
System.out.print(" Growth Rate (Per Year in Billions): ");
growthRate = input.nextDouble();
System.out.print(" Purchase Price (In Billions): ");
purchasePrice = input.nextDouble();
input.close();

System.out.println("-----------------------------------------");
System.out.println(" ROI Period: " + calculateYears(0) + " Years");
}

public static double calculateMoney(double years) {
if(years < 1) return 0;
return calculateMoney(years - 1) + initialValue + (growthRate * (years - 1));
}

public static double calculateYears(double years) {
if(calculateMoney(years) >= purchasePrice) return Math.round(years * 100) / 100.0;
return calculateYears(years + 0.01);
}

}

最佳答案

是的——您可以为此使用对数函数。

根据您的 Java 代码,您可以编写:

public static double yearsNeeded(double initialValue, double growthRate, double purchasePrice) {
return Math.log(purchasePrice / initialValue) / Math.log(1 + growthRate);
}

举个例子:

public static void main(String[] args) {
System.out.println("Years to go from 100 to 150 with a growth rate of 5%: "
+ yearsNeeded(100, .05, 150));
}

基本上你要解决“年”:

initialValue * (1 + growthRate) ^ years = purchasePrice

其中 ^ 表示求幂。

您可以将其重写为:

(1 + growthRate) ^ years = purchasePrice / initialValue

变成:

years = [1 + growthRate] log (purchasePrice / initialValue)

其中日志的基数是“1 + growthRate”。而另一个基的log等于任意一个基的log除以该基的log。

关于Java 投资返回率复合计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54818829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com