충분히 쌓여가는
형식화 클래스 본문
형식화 클래스
java.text 패키지의 DecimalFormat(숫자), SimpleDateFormat(날짜)
숫자와 날짜를 원하는 형식으로 쉽게 출력 가능(숫자, 날짜 -> 형식 문자열)
double number = 1234567.89; // 10 진수
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number); // result = "1.2E6"
형식 문자열에서 숫자와 날짜를 뽑아내는 기능(형식 문자열 -> 숫자, 날짜)
DecimalFormat df = new DecimalFormat("#,###.##");
Number num = df.parse("1,234,567.89");
double d = num.doubleValue(); // 1234567.89
DecimalFormat
숫자를 형식화할 때 사용(숫자 -> 형식 문자열)
double number = 1234567.89; // 10 진수
DecimalFormat df = new DecimalFormat("#.#E0"); // 지수 형식
String result = df.format(number); // result = "1.2E6"
기호 | 의미 | 패턴 | 결과(1234567.89) |
0 | 10진수(값이 없을 때는 0) | 0 0.0 0000000000.0000 |
1234568 1234567.9 0001234567.8900 |
# | 10진수 | # #.# ##########.#### |
1234568 1234567.9 1234567.89 |
E | 지수기호 | #.#E0 0.0E0 0.000000000E0 00.00000000E0 #.#########E0 ##.########E0 |
1.2E6 1.2E6 1.234567890E6 12.34567890E5 1.23456789E6 1.23456789E6 |
특정 형식의 문자열을 숫자로 변환할 때도 사용(형식 문자열 -> 숫자)
Number: 모든 숫자 래퍼클래스의 최고 조상
DecimalFormat df = new DecimalFormat("#,###.##");
Number num = df.parse("1,234,567.89");
double d = num.doubleValue(); // 1234567.89 // Integer.parseInt()는 콤마(,)가 포함된 문자열을 숫자로 변환 못함
코드
import java.text.DecimalFormat;
public class DecimalFormatTest {
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));
}
}
}
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
코드
문자열 -> 숫자 -> 다른 형식의 문자열
parse: 형식 문자열에서 숫자로 바꿀 때 사용
format: 숫자를 형식 문자열로 바꿀 때 사용
import java.text.DecimalFormat;
public class DecimalFormatTest {
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) {}
}
}
1,234,567.89 -> 1234567.89 -> 1.235E6
'Java > JAVA2' 카테고리의 다른 글
collections framework (0) | 2023.07.04 |
---|---|
SimpleDateFormat (0) | 2023.07.04 |
Calendar 클래스 (0) | 2023.07.02 |
오토박싱 & 언박싱 (0) | 2023.06.29 |
래퍼(wrapper) 클래스, Number 클래스 (0) | 2023.06.29 |