Ch10-9~12. DecimalFormat
0. 목차
Chapter10. 날짜와 시간 & 형식화
Ch10 - 9. 형식화 클래스
Ch10 - 10. DecimalFormat
Ch10 - 11. DecimalFormat 예제1
Ch10 - 12. DecimalFormat 예제2
Ch10 - 9. 형식화 클래스
▶ 형식화 클래스란?
▷ java.text 패키지의 DecimalFormat, SimpleDateFormat
- Decimal : 숫자(10진수)
- Date : 날짜
▷ 숫자와 날짜를 원하는 형식으로 쉽게 출력 가능
- 숫자 → 형식 문자열
- 날짜 → 형식 문자열
▷ double → String
double num = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0"); // 형식 문자열
String result = df.format(num);
"1.2E6"
- 1.2E6 = 1.2 × 106
▷ String → double
DecimalFormat df = new DecimalFormat("#,###.##"); // 형식 문자열
Number num = df.parse("1,234,567.89");
double d = num.doubleValue();
1234567.89
Ch10 - 10. DecimalFormat
▶ DecimalFormat이란?
▷ 숫자(10진수)를 형식화 할 때 사용
▷ 숫자(10진수) → 형식 문자열
▷ 특정 형식의 문자열을 숫자로 변환 할 때도 사용
- 형식 문자열 → 숫자(10진수)
DecimalFormat df = new DecimalFormat("#,###.##"); // 형식 문자열 Number num = df.parse("1,234,567.89"); // Number : 모든 숫자 래퍼 클래스의 최고 조상 double d = num.doubleValue();
1234567.89
- Integer.parseInt()는 콤마(,)가 포함 된 문자열을 숫자로 변환 못함
Ch10 - 11. DecimalFormat 예제1
▶ 패턴 출력
▷ 숫자 → 형식 문자열 : df.format(number)
▷ 형식 문자열 → 숫자 : df.parse(number)
public static void main(String[] args) throws Exception {
double number = 1234567.89;
String[] pattern = {
"0",
"#",
"0.0",
"#.#",
"0000000000.0000",
"##########.####",
"#.#-",
"-#.#",
"#,###.##",
"#,####.##",
"#E0",
"0E0",
"##E0",
"00E0",
"####E0",
"0000E0",
"#.#E0",
"0.0E0",
"0.000000000E0",
"00.00000000E0",
"000.0000000E0",
"#.#########E0",
"##.########E0",
"###.#######E0",
"#,###.##+;#,###.##-",
"#.#%",
"#.#\u2030",
"\u00A4 #,###",
"'#'#,###",
"''#,###",
};
for(int i=0; i < pattern.length; i++) {
DecimalFormat df = new DecimalFormat(pattern[i]);
System.out.printf("%19s : %s\n",pattern[i], df.format(number));
}
}
}
// console
0 : 1234568
# : 1234568
0.0 : 1234567.9
#.# : 1234567.9
0000000000.0000 : 0001234567.8900
##########.#### : 1234567.89
#.#- : 1234567.9-
-#.# : -1234567.9
#,###.## : 1,234,567.89
#,####.## : 123,4567.89
#E0 : .1E7
0E0 : 1E6
##E0 : 1.2E6
00E0 : 12E5
####E0 : 123.5E4
0000E0 : 1235E3
#.#E0 : 1.2E6
0.0E0 : 1.2E6
0.000000000E0 : 1.234567890E6
00.00000000E0 : 12.34567890E5
000.0000000E0 : 123.4567890E4
#.#########E0 : 1.23456789E6
##.########E0 : 1.23456789E6
###.#######E0 : 1.23456789E6
#,###.##+;#,###.##- : 1,234,567.89+
#.#% : 123456789%
#.#‰ : 1234567890‰
¤ #,### : ? 1,234,568
'#'#,### : #1,234,568
''#,### : '1,234,568
Ch10 - 12. DecimalFormat 예제2
▶ 형식 문자열 → 숫자 → 형식 문자열
▷ 형식 문자열 → 숫자
df.parse(number)
▷ 숫자 → 형식 문자열
df.format(number)
▷ 형식 문자열 → 숫자 → 형식 문자열
df.parse(number) → df.format(number) → df.parse(number)
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###.##");
DecimalFormat df2 = new DecimalFormat("#.###E0");
try {
Number num = df.parse("1,234,567.89");
System.out.print("1,234,567.89" + " → ");
double d = num.doubleValue();
System.out.print(d + " → ");
System.out.println(df2.format(num));
} catch(Exception e) {
}
}
// console
// 형식 문자열 → 숫자(double) → 형식 문자열
"1,234,567.89" → 1234567.89 → "1.235E6"