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

文字列を使用できます。特定の精度で数値を含むメッセージをフォーマットするためのフォーマット。たとえば、これは金額を小数点以下2桁に丸めます。

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