코드일기장

[Java] 형식화 클래스, DecimalFormat 본문

Java

[Java] 형식화 클래스, DecimalFormat

won_hyeok2 2022. 3. 6. 20:13

 

 

java.text 패키지의 DecimalFormat, SimpleDateFormat

 

- 숫자와 날짜를 원하는 형식으로 쉽게 출력이 가능하다. (숫자, 날짜 -> 형식 문자열)

 

import java.text.DecimalFormat;

double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String str = df.format(number);  //str="1.2E6"

DecimalFormat 클래스의 format 메서드를 이용하면 숫자형이 문자열로 바뀔 수 있다.

 

 


이 반대도 가능하다.

 

- 형식 문자열에서 숫자와 날짜를 뽑아내는 기능(형식 문자열->숫자, 날짜)

 

DecimalFormat df2 = new DecimalFormat("####.##");
Number num = df2.parse("1234.56");
double d = num.doubleValue();  //d=1234.56

parse메서드를 사용하면 문자열이 넘버 타입의 객체로 바꿀 수 있다. (Number는 모든 숫자의 래퍼클래스의 최고 조상이다.)

 

 

 

참고로(Integer.parseInt(), Float.parseFloat() 등은 콤마(,)가 포함된 문자열을 숫자로 변환 못한다.)

 


 

 

DecimalFormat

 

- 숫자를 형식화할 때 사용 (숫자 -> 형식 문자열)

 

기호 의미 패턴 결과(1234567.89)
0 10진수 (값이 없을 때는 0) 0
0.0
0000000000.0000
1234568
1234567.9
0001234567.8900
# 10진수 #
#.#
##########.####
1234568
1234567.9
1234567.89
. 소수점 #.# 1234567.9
- 음수부호 #.#-
-#.#
1234567.9-
-1234567.9
, 단위 구분자 #,###,###.#
#,####,##
1,234,567.9
1,23,45,68
E 지수 기호 #E0
0E0
##E0
00E0
####E0
0000E0
#.#E0
0.0E0
0.00000000E0
00.0000000E0
000.00000E0
#.########E0
#.#######E0
###.######E0
생략
; 패턴구분자 #,###,##+;#,###,##- 1,234,567.89+
1,234,567.89-
% 퍼센트 #.#% 123456789%
\u2030 퍼밀(퍼센트* 10) #.#\u2030 1234567890%
\u00a4 통화 \u00a4 #,### \ 1,234,568
' escape문자 '#' #,###
"#,###
#1,234,568

여기서 의문인 것은 실수 값 1234567.89  Decimal패턴 #일 때 출력 결과 1234568 값이 나온다 소수점이 반올림되어서 1234567이 아닌 1234568이 나온 것이다. 만약 실수 값이 1234567.39라면 1234567이 나올 것이다.

 

 

 

 

 

 


 

DecimalFormat예제

 

import java.text.DecimalFormat;

public class DecimalClass {

	public static void main(String[] args){
		DecimalFormat df1 = new DecimalFormat("#,###.##");
		DecimalFormat df2 = new DecimalFormat("#.###E0");
		try {
			Number num = df1.parse("1,234,567.89");
			System.out.print("1,234,567,89 ->  ");
			
			double d = num.doubleValue();
			System.out.print(d+" ->  ");
			
			System.out.print(df2.format(num));
			
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}
1,234,567,89 ->  1234567.89 ->  1.235E6

'Java' 카테고리의 다른 글

[Java] Iterator  (0) 2022.07.13
[Java] SimpleDateFormat()  (0) 2022.03.06
[Java] Calendar 예제  (0) 2022.03.03
[Java] Calendar 클래스  (0) 2022.02.25
[Java] StringBuffer의 생성자와 메서드  (0) 2022.02.18
Comments