0

我是 Java 编程新手。我有一个程序任务来计算未来的投资价值。我已经编写的程序并且它可以工作,但我的导师要求显示用户的输入,我无法在我的文本或在线找到有关该主题的任何信息。我给我的导师发了邮件,没有结果。您将在下面看到该程序。我也无法找到如何四舍五入到最近的小数点。感谢任何可以提供帮助的人。

import javax.swing.JOptionPane; 

/* This program will calculate the future investment value after entering the 
* investment amount, annual interest rate and the number of years for the investment*/


public class FutureInvestment {
   public static void main(String[] args){

   //Enter annual interest rate
   String annualInterestRateString = JOptionPane.showInputDialog(
   "Enter annual interest rate, for example, 8.25:");

   //Convert string to double
   double annualInterestRate = Double.parseDouble(annualInterestRateString);

   //Obtain monthly interest rate
   double monthlyInterestRate = annualInterestRate / 1200; 

   //Enter number of years
   String numberOfYearsString = JOptionPane.showInputDialog(
   "Enter number of years as an integer, for example, 5:");

   //Convert string to integer
   int numberOfYears = Integer.parseInt(numberOfYearsString);

   //Enter investment amount
   String investmentAmountString = JOptionPane.showInputDialog(
   "Enter investment amount, for example, 120000.95:");

   //Convert string to double
   double investmentAmount = Double.parseDouble(investmentAmountString);

   //Calculate future investment amount
   double futureInvestmentAmount = investmentAmount * (Math.pow(1 + monthlyInterestRate, 
numberOfYears * 12));

   //Format to keep 2 digits after the decimal point
   futureInvestmentAmount = (int)(futureInvestmentAmount * 100) / 100.0;

   //Display results
   String output = "The Future Investment Value is $" + futureInvestmentAmount;

   JOptionPane.showMessageDialog(null, output);

   }

}
4

2 回答 2

1

为了帮助进行舍入和精度,我建议使用BigDecimal而不是double. 由于浮点算术不精确

final String annualInterestRateString = JOptionPane.showInputDialog("Enter annual interest rate, for example, 8.25:");
final BigDecimal annualInterestRate = new BigDecimal(annualInterestRateString);
final BigDecimal monthlyInterestRate = annualInterestRate.divide(new BigDecimal("1200"), RoundingMode.HALF_EVEN);
final String numberOfYearsString = JOptionPane.showInputDialog("Enter number of years as an integer, for example, 5:");
final Integer numberOfYears = Integer.parseInt(numberOfYearsString);
final String investmentAmountString = JOptionPane.showInputDialog("Enter investment amount, for example, 120000.95:");
final BigDecimal investmentAmount = new BigDecimal(investmentAmountString);
final BigDecimal futureInvestmentAmount = investmentAmount.multiply(monthlyInterestRate.add(BigDecimal.ONE).pow(numberOfYears * 12), new MathContext(2, RoundingMode.HALF_EVEN));
final String output = "The Future Investment Value is $" + new DecimalFormat("#,##0.00;-#,##0.00").format(futureInvestmentAmount);
JOptionPane.showMessageDialog(null, output);
于 2013-02-11T03:21:37.710 回答
0

您可以使用字符串。format 以格式化包含具有特定精度的数字的消息。例如,这会将金额四舍五入到小数点后两位:

String output =String.format("The Future Investment Value is $%.2f", futureInvestmentAmount)
于 2013-02-10T16:47:49.270 回答