숫자 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.