숫자 0..9를 2 자리로 표시하는 방법 (날짜가 아님)


215

항상 100 이하의 숫자를 두 자리 숫자로 표시하고 싶습니다 (예 : 03, 05, 15 ...)

조건부를 사용하지 않고 0을 추가하여 10 미만인지 확인하려면 어떻게해야합니까?

결과를 다른 문자열에 추가해야하므로 printf를 사용할 수 없습니다.

답변:


528

당신이 사용할 수있는:

String.format("%02d", myNumber)

javadocs 도 참조하십시오


1
myNumber가 double 인 경우 어떻게합니까?
Fra

3
@Fra, String.format("%02.0f", myNumber)소수점 이하의 숫자를 원하지 않는 경우 사용
beny23

문자열 형식 구문에 대해 구체적으로 읽으려면 다음을 수행하십시오. 형식 문자열 구문
Pony

"내재적으로 기본 로캘을 사용하는 것이 버그의 일반적인 원인입니다. 대신 String.format (Locale, ...) 사용"
Christopher Stock

1
@ChristopherStock 앱이 실행되는 기기의 올바른 기본 로캘을 사용하는 것과는 완전히 별개의 문제입니다. 무시하거나 수정할 수는 있지만 Android 및 로캘과 만 관련이 있습니다. 실제 문자열 형식과는 아무 관련이 없습니다
Radu

55

번호를 인쇄해야 할 경우 printf를 사용할 수 있습니다

System.out.printf("%02d", num);

당신이 사용할 수있는

String.format("%02d", num);

또는

(num < 10 ? "0" : "") + num;

또는

(""+(100+num)).substring(1);

2
형식을 사용하는 것이 훨씬 느리지 만 끔찍하게 잘못 될 가능성이 더 명확하지 않습니다. 예를 들어 num이 -1 인 경우 ;)
Peter Lawrey

42

이것을 사용할 수 있습니다 :

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01

이것이 정답입니다! String.format을 통한 솔루션 결과는 로캘 설정에 따라 달라질 수 있습니다. (. 암시 적 기본 로케일을 사용하여 안드로이드 린터 경고 "버그의 일반적인 소스 : 사용 및 String.format (로케일, ...))
크리스토퍼 증권

3

String 클래스에는 다음과 같은 형식 기능이 있습니다.

System.out.println(String.format("%02d", 5));

전체 문서를 보려면 여기 문서가 있습니다


그것은 말한다java.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha

2

안드로이드 리소스에서는 다소 간단합니다.

<string name="smth">%1$02d</string>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.