Notice
Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

형식화 클래스 본문

Java/JAVA2

형식화 클래스

빌드이너프 2023. 7. 3. 23:22

형식화 클래스

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