모바일 애플리케이션

[안드로이드/JAVA] 통화 및 숫자 형식의 포맷 나타내기 (NumberFormat)

안드로이드 통화 및 숫자 포맷 처리 (Android NumberFormat)


특정 숫자값에 대한 화면 출력을 위해서 다음과 같이 콤마(,)가 들어간 숫자 형식을 사용하고 싶은 경우가 있습니다.

1,000,000
123,456
10,500

이럴 때는 NumberFormat 클래스를 사용할 수 있습니다.

 

일반적인 사용 방법은 다음과 같습니다.

NumberFormat.getInstance([Locale 정보]).format([Int형 변수]);

getInstance 메소드에는 현재 시스템 또는 특정 Locale 정보가 들어가야 합니다. 현재 시스템의 지역 정보는 Locale.getDefault()을 통해 가져올 수 있으며, 이외에 Locale.US, Locale.KOREA 등으로도 Locale 정보를 가져올 수 있습니다.

일반적인 숫자의 경우 getInstance() 대신 getNumberInstance()를 사용해도 됩니다. 이 두 메소드의 실행 결과는 같습니다.

다음은 NumberFormat 클래스를 사용하여 숫자 형식으로 나타내는 예시입니다.

int testNum = 100000;

// 현재 로케일에 따라 숫자 형식 표시
// 실행 결과 : 100,000
Log.d("결과: ", NumberFormat.getInstance(Locale.getDefault()).format(testNum));

// 'US' 로케일에 대한 숫자 형식 표시
// 실행 결과 : 100,000
Log.d("결과: ", NumberFormat.getInstance(Locale.US).format(testNum));

NumberFormat여러번 호출해야 하는 경우 다음과 같이 형식을 미리 선언해도 됩니다.

int testNum1 = 100000;
int testNum2 = 1000;
String result1 = "";
String result2 = "";
// NumberFormat 형식을 미리 선언
NumberFormat numf = NumberFormat.getInstance(Locale.getDefault());

// 사용할 때는 아래와 같이 간단하게
result1 = numf.format(testNum1);
result2 = numf.format(testNum2);

// 로그 데이터로 출력
// 결과 1: 100,000, 결과 2: 1,000
Log.d("결과 1: ", result1);
Log.d("결과 2: ", result2);

만약 숫자가 ‘통화’를 나타낼 경우에는 getCurrencyInstance 메소드를 사용하는 것이 좋습니다.

int price = 10000;
String result = "";

// 현재 국가 설정의 통화 표시
result = NumberFormat.getCurrencyInstance(Locale.getDefault()).format(price);

// '달러' 단위 통화 표시
result = NumberFormat.getCurrencyInstance(Locale.US).format(price);

// '원' 단위 통화 표시
result = NumberFormat.getCurrencyInstance(Locale.KOREA).format(price);

Log.d("결과: ", result);

결과는 $100,000.00 또는 ₩100,000와 같이 나타날 것입니다.

 

format 메소드의 인자값에는 반드시 Integer 또는 int 데이터 타입의 변수가 들어가야 합니다. 만약 String 타입의 값을 넣게 되면 다음과 같은 에러가 발생합니다.

java.lang.IllegalArgumentException: Cannot format given Object as a Number

 

이외에도 정수형 값으로 반환하는 getIntegerInstance 메소드와 백분율 형태로 반환하는 getPercentInstance 메소드 등이 있습니다. 자세한 내용은 아래 참고 자료 문서를 읽어보시면 좋을 듯 합니다.

 

 

참고 자료


JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

[iOS] Xcode ‘You do not have required contracts to perform an operation’ 해결

Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…

1주 ago

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

6개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

8개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

8개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

8개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

8개월 ago