2013-03-23 6 views
1

Java에서 대학에서 과제물을 수신했는데 콘솔에 출력 형식을 지정하려면 printf을 사용해야합니다. 모두 멋지고 멋졌지 만 어떤 이유에서 출력이 10500.000000000002이고 오른쪽 출력이 10500.00이어야합니다. %0.2f을 사용하려고했지만 String으로 포맷했기 때문에 할 수 없습니다.Java 형식 수정자가 문자열에 두 배로 표현됩니다.

System.out.printf("\nAge Depreciation Amount:%66s","$"+ ageDepreciationAmount); 

가 제대로이를 포맷 할 수있는 방법을 제안 해주십시오 수 :

이 질문 라인은? 이것이 자바의 입문 과정임을 명심하십시오. 즉, 프로그래밍에 관한 완전한 재앙을 의미합니다.

+0

*의 xD – Maroun

답변

1

%0.2f이 올바르지 않습니다. 당신은 %.2f를 사용해야합니다

예 :

System.out.printf("Age Depreciation Amount: %.2f\n", ageDepreciationAmount); 

또는 ageDepreciationAmount 경우

String
System.out.printf("Age Depreciation Amount: %.2f\n", Double.parseDouble(ageDepreciationAmount)); 

가 BTW 우리가 보통의 printf 후 \n를 추가 할 수 있으며,하지 전에.

출력 : 당신이 공백으로 출력을 채우려는 경우 66이 전체 폭이며, 2 소수점 자릿수이고, 당신이 %66.2을 사용하는 것이

Age Depreciation Amount: 10500.00 

. 그러나 이는 숫자에만 적용됩니다.

double ageDepreciationAmount = 10500.000000000002; 
    double ageDepreciationAmount2 = 100500.000000000002; 

    String tmp = String.format("$%.2f", ageDepreciationAmount); 
    String tmp2 = String.format("$%.2f", ageDepreciationAmount2); 

    System.out.printf("Age Depreciation Amount: %20s\n", tmp); 
    System.out.printf("Age Depreciation Amount: %20s\n", tmp2); 

출력 :이 프로그램에 올 때 나는 완전한 재앙을 오전 *

Age Depreciation Amount:   $10500.00 
Age Depreciation Amount:   $100500.00 
+0

OK 당신은 또한 달러 기호를 인쇄 할 필요가 있기 때문에, 당신은 다음과 같이 두 단계로 그것을 할 수 있습니다 그 작품을 고맙습니다,하지만 지금은 어떻게 10500.00 오른쪽 공간의 특정 금액을 이동합니까. 이전 예에서 나이 감가 상각 량 66을 오른쪽으로 이동 한 후 출력을 이동하면 달러 기호와 105000.00이 출력됩니다. 그래서 그것은 같습니다 연령 감가 상각 금액 ______________________________ $ 10500.00 –

+0

@ JohnCarson-Zangor 업데이트보기 – user000001

+0

도움을 주셔서 대단히 감사합니다. –

2
DecimalFormat df = new DecimalFormat("0.##"); 
String result = df.format(10500.000000000002);