2016-10-05 12 views
0

ここに私が答えなければならない問題があります。 (さまざまな金利のローンを比較)ユーザがローンの金額とローンの期間を年数で入力し、 5%から8%までの各金利の毎月支払額と合計支払額を1/8ずつ増やします。小数点以下の桁数と固定桁の書式

import java.util.Scanner; // Scanner is in java.util 
 
public class FinancialApp { 
 
    \t public static void main(String[] args) { 
 
    \t Scanner input = new Scanner(System.in); // Scanner object 
 

 
    \t System.out.print("Enter loan amount: "); // input value for loan 
 
    \t \t double loanAmount = input.nextDouble(); 
 

 
    \t System.out.print("Enter number of years as an integer: "); 
 
    \t \t int years = input.nextInt(); 
 

 
    \t System.out.println("Intrest Rate" + "\t" + "Monthly Payment" + "\t" + "Total Payment"); 
 

 
    \t \t for(double i = 5.000; i <= 8.000; i += 0.125){ 
 

 
\t \t \t double monthlyIntrest = i/1200; 
 
\t \t \t double monthlyPay = loanAmount * monthlyIntrest/(1 - 1/Math.pow(1 + monthlyIntrest, years * 12)); 
 
\t \t \t double totalPay = monthlyPay * years * 12; 
 

 
\t \t \t System.out.println(i + "%" + "\t" + monthlyPay + "\t" + totalPay); 
 

 
\t \t } 
 
\t } 
 
}
まず第一に、私はそれがコーディングに来るとき、私は非常に経験の浅いだと言いたい、それは私は簡単に説明することができたので、もし私の教授は、私たちには全く何も教えていません本当に感謝しています。私はこのクラスで十分に苦労しています。 実際の問題がわかりました。 コードは実行されますが、月額支払いと小切手の合計金額が表示されます。小数点以下2桁まで取得する方法はわかりません。また、毎月の支払いの数値は、左にオフセットされています(列ラベルに並んでいません)。

+3

を単純化し、あなたの質問に答えるために、それは 'System.out.printf( "%2Fの\ nを"、12345.456)のようにacheivedすることができます。 '本当にあなたはお金のために'ダブル 'を使ってはいけません。 BigDecimalを見てください –

+0

doubleをBigDecimalに変換し、setScaleメソッドを使用してください。 –

答えて

1

まず、お金の扱いにDoubleを使用しないでください。

あなたが唯一の2桁,後には、この操作を行う試すことができます。System.out.printf("%.2f", yourNumber);

+1

私は彼らにこれをして、お金が転送されたときにいくつかのバグを修正するようにします:-) – Stefan

関連する問題