2016-10-05 3 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보다 소수점이있는 숫자가 표시되고 소수점 이하 두 자리까지 가져 오는 방법을 모릅니다. 또한 월별 지불 번호는 왼쪽으로 오프셋됩니다 (열 레이블과 일직선으로 정렬되지 않음).

+3

은 단순하게 귀하의 질문에 대답하기 위해서는'System.out.printf (". % 2F \ 없음"12345.456)처럼 acheived 할 수있다; '하지만 돈을 위해서'double'을 사용해서는 안됩니다. BigDecimal을 보자. –

+0

double을 BigDecimal로 변환하고 setScale 메소드를 사용한다. –

답변

1

먼저 돈을 가지고 일하는 데 Double을 사용하지 마시기 바랍니다.

에만 2 자리 , 후 가지고 이렇게 시도 할 수 있습니다 : System.out.printf("%.2f", yourNumber);

+1

나는 돈을 넘겨 줄 때 그들에게이 일을시키고 몇 가지 버그를 수정하라고 권한다 :-) – Stefan