2010-01-29 2 views
9

자바에서는 실제로 필요하면 String.format을 사용하여 십진수 만 표시 할 수 있습니까? 예를 들어, 내가 할 경우이 :조건부 소수점에 String.format을 사용할 수 있습니까?

String.format("%.1f", amount); 

가 포맷됩니다 "1.2222을"-> "1.2" "1.000"-> "1.0" 등

하지만 두 번째 경우

(1.000) "1"을 반환하고 싶습니다. 이 가능한 String.format, 또는 DecimalFormatter 사용할 수 있습니까?

소수 형식화 프로그램을 사용해야하는 경우 원하는 형식 유형마다 별도의 DecimalFormatter를 만들어야합니까?

답변

10

없음 (1 소수점 자리까지, 최대 2 소수점 등으로), 당신은 DecimalFormat 사용해야합니다 : 당신이 원하는만큼

final DecimalFormat f = new DecimalFormat("0.##"); 
System.out.println(f.format(1.3)); 
System.out.println(f.format(1.0)); 

가 많은 #들 넣어; DecimalFormat는 숫자가 #까지 중요하다고 생각할 때까지만 인쇄합니다.

3

이렇게하면 원하는 것을 얻을 수 있습니다. 귀하의 요청에 대한 요구 사항이나 맥락에 대한 확신이 없습니다.

float f; 
f = 1f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1 
f = 1.555f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555 

내가 필요로하는 것에 큰 도움이되었습니다.

위의 FYI, System.out.printf (fmt, x)는 System.out.print와 같습니다 (String.format (fmt, x)

관련 문제