형식화 클래스
원하는 형식으로 표현 또는 변환하기 위해서 패턴을 정의한다.
형식화된 데이터에서 원래의 데이터를 얻을 수 있다.
package java.text에 포함되어 있다.
숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화했다.
Class DecimalFormat
숫자를 형식화하는 클래스.
숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있다.
일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환할 수 있다.
사용법
원하는 출력형식의 패턴을 작성하여 DecimalFormat 인스턴스를 생성한다.
출력하고자 하는 문자열로 format 메서드를 호출하면 원하는 패턴에 맞게 변환된 문자열을 얻게 된다.
Java
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#");
String result = df.format(number);기호
DecimalFormat의 패턴의 작성에 사용되는 기호와 자주 사용될만한 패턴은 다음과 같다.
- 0 : 10진수. 값이 없을 때는 0
- # : 10진수
- . : 소수점
- - : 음수부호
- , : 단위 구분자
- E : 지수 기호
- ; : 패턴 구분자
- % : 퍼센트
- \u2030 : 퍼밀(퍼센트x10)
- \u00A4 : 통화
- ' : escape 문자
Java
double number = 1234567.89;
String pattern[] = {
        "0",                     // 1234568
        "0.0",                   // 1234567.9
        "0000000000.0000",       // 0001234567.8900
        "#",                     // 1234568
        "#.#",                   // 1234567.9
        "##########.####",       // 1234567.89
        "#.#",                   // 1234567.9
        "-#.#",                  // -1234567.9
        "#.#-",                  // 1234567.9-
        "#,###.##",              // 1,234,567.89
        "#,####.##",             // 123,4567.89
        "#E0",                   // 1.23456789E6
        "0E0",                   // 1E6
        "##E0",                  // 1.23456789E6
        "00E0",                  // 12E5
        "####E0",                // 123.456789E4
        "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.2345679E6
        "#,###.##+;#,###.##-",   // 1,234,567.89+
        "#.#%",                  // 123456789%
        "#.#\u2030",             // 1234567890‰
        "\u00A4 #,###",          // ₩ 1,234,568
        "'#'#,###",              // #1,234,568
        "''#,###"                // '1,234,568
};
for (int i = 0; i < pattern.length; i++) {
    DecimalFormat df = new DecimalFormat(pattern[i]);
    System.out.println(pattern[i] + " : " + df.format(number));
}Number parse(String source)
DecimalFormat의 조상인 NumberFormat에 정의된 메서드.
기호와 문자가 포함된 문자열을 숫자로 쉽게 변환할 수 있다.
Java
public Number parse(String source) throws ParseException지정된 패턴으로 입력되지 않은 경우, 호출 시 예외(ParseException)가 발생한다.
Java
DecimalFormat df1 = new DecimalFormat("#,#####.##");
DecimalFormat df2 = new DecimalFormat("#.###E0");
try {
    Number num = df1.parse("2,01708.23");
    double d = num.doubleValue();
    System.out.println(d);                   // 201708.23
    System.out.println(df2.format(d));            // 2.017E5
} catch (Exception e) { }Integer.parseInt 메서드는 콤마(,)가 포함된 문자열을 숫자로 변환하지 못한다.
참고 서적: 자바의 정석 3판 2

