DecimalFormat 클래스

우리의 일상에서 가장 많이 쓰이는 진수, 10진수를 형식화하는 역할을 하는 클래스가 JAVA에서 DecimalFormat이라는 클래스입니다. 이 클래스는 NumberFormat을 상속하고 있는 클래스이죠. 10진수를 다양한 형식에 맞게 출력해줄 수 있습니다. C언어에서는 이미 fprintf 등이 그 역할을 담당하고 있죠. 이제부터 어떻게 사용되는지 배워보도록 하겠습니다.

 

Decimal Pattern 적용

DecimalFormat은 java.text 패키지안에 존재하므로 따로 import를 해야합니다.  DecimalFormat은 문자 '#'과 '0'이 숫자를 나타내는데 쓰이며 쉼표(,), 마침표(.), 대시(-) 등으로 숫자 형식을 나타낼 수 있습니다. 많이 사용패턴은 아래의 표에 정리해놓았습니다.

 

 

Format 설명
0 10진수, 값이 없는 자리는 0으로 채움
# 10진수, 값이 없는 자리는 나타나지 않음
. 소수점을 이하 나타냄
- 음수 부호를 나타냄
, 단위 구분자를 나타냄
E 지수 기호를 나타냄, E 이후 0를 써서 표현(ex E0)
% 퍼센트 기호
' escape문자, 만약 #을 문자로 나타내고 싶다면 '#' 으로 표현
그외 문자 문자로 취급

 

 

DecimalFormat을 사용하는 방법은 생성자를 통해서 형식을 지정해주는 방법이 있습니다. 아래처럼 말이죠.

DecimalFormat format=new DecimalFormat("###,###.#######");

 

또는 applyPattern을 사용하여 패턴을 적용할 수 있습니다.

format.applyPattern("###,###.#######");

 

 

 

중요한것은 우리가 패턴을 적용하고 난 후 형식에 맞는 문자열을 뽑아와야합니다. 이때 format이라는 메소드를 사용하지요. 아래와 같이 사용합니다.

double n = 11223344.5678;
String formattedStr = format.format(n);

 

패턴과 사용예

DecimalFormat의 사용법은 어렵지 않습니다. 주로 사용하는 방식은 패턴을 지정하고 난 후 format으로 지정된 형식을 가진 숫자 형식 문자열을 가져오는 용도가 대부분입니다. 아래의 코드를 통해서 어떻게 출력되는지 확인해보세요.

public static void main(String[] ar){
		
	DecimalFormat format=new DecimalFormat();
		
	String patterns[]= {
			"0",
			"#",
			"0.0",
			"000.000",				//소수점
			"000,000,000.0",
			"000,000,000.000",
			"000,000,000.000000",	//숫자가 나타나지 않는 경우 나머지 빈자리를 0으로 채워줌
			"#,#,#,#.###",			//한글자씩 ,이 붙어서 나옴
			"###,###,###.#",
			"###,###,###.###",
			"###,###,###.######",
			"-###,###,###.######",	//숫자가 나타나지 않는 경우 출력하지 않음
			"###.##E0",				//지수 형식으로 출력
			"my number: ###.##%",	//my number라는 문자열이 합쳐짐
			"'#' ###,###.####",		//escape로 #을 문자화
			"'0' 000,000.00000000",	//escape로 0을 문자화
			"###,###.000000000"	//섞어서도 쓸 수 있음
	};
		
	double number=1234123123.1234;
		
	for(int i=0;i<patterns.length;i++) {
		format.applyPattern(patterns[i]);
		System.out.println("[pattern "+patterns[i]+"] "+format.format(number));
	}
		
}

 

결과

 

 

 

[pattern 0] 1234123123
[pattern #] 1234123123
[pattern 0.0] 1234123123.1
[pattern 000.000] 1234123123.123
[pattern 000,000,000.0] 1,234,123,123.1
[pattern 000,000,000.000] 1,234,123,123.123
[pattern 000,000,000.000000] 1,234,123,123.123400
[pattern #,#,#,#.###] 1,2,3,4,1,2,3,1,2,3.123
[pattern ###,###,###.#] 1,234,123,123.1
[pattern ###,###,###.###] 1,234,123,123.123
[pattern ###,###,###.######] 1,234,123,123.1234
[pattern -###,###,###.######] -1,234,123,123.1234
[pattern ###.##E0] 1.2341E9
[pattern my number: ###.##%] my number: 123412312312.34%
[pattern '#' ###,###.####] # 1,234,123,123.1234
[pattern '0' 000,000.00000000] 0 1,234,123,123.12340000
[pattern ###,###.000000000] 1,234,123,123.123400000

 

이상으로 간단하게 DecimalFormat클래스를 소개했고 사용법을 알아보았습니다. 워낙 어렵지 않은 형식 클래스이고 편리하게 십진수를 표현할 수 있으므로 적어도 #과 0의 차이와 format() 메소드만 알고 있으면 무난히 사용할 수 있겠습니다.

 

 

반응형
블로그 이미지

REAKWON

와나진짜

,