2016-10-05 89 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 } 
 
}
首先,我想說,我很沒有經驗,當涉及到編碼和我的教授還沒有教給我們任何東西,所以如果它可以簡單地我解釋我真的很感激它。我正在爲這個班級奮鬥。 好吧,真正的問題: 代碼運行,但是,它給了我每月付款和總計付款的數字有6位以上的小數點,我不知道如何得到它到2位小數。此外,每月付款的數字向左偏移(不與列標籤對齊)。

+3

要簡單地回答你的問題,它可以像'System.out.printf(「%2F \ n」,12345.456)來來達到的; '但是你真的不應該爲了錢而使用'雙'。看看BigDecimal –

+0

將你的double轉換爲BigDecimal並使用setScale方法。 –

回答

1

首先,我請你不要使用Double與金錢合作。

你可以嘗試這樣做有2只後,位數:System.out.printf("%.2f", yourNumber);

+1

我希望他們這樣做,讓我修正一些錯誤,當金錢轉移:-) – Stefan

相關問題