JAVA

[JAVA] 천 단위마다 쉼표로 구분하기 - DecimalFormat, NumberFormat

hail2y 2024. 11. 4. 13:06

두 클래스 모두 java.text 패키지에 속하여 숫자를 문자열로 또는 문자열을 숫자로 변환한다. 두 클래스 모두 패턴을 이용하여 특정 패턴 때문에 형 변환이 쉽지 않을 때 사용할 수 있다. 예를 들어 Double.parseDouble("123,456.78"); 구문은 에러가 발생한다. 그래서 이러한 경우들에 사용하면 된다. 먼저 숫자를 특정한 패턴에 맞는 문자열로 바꾸고 싶다면 format() 메서드를 사용하면 된다. 반대로 특정 패턴에 있는 문자열을 숫자로 변환하고 싶을 때는 parse() 메서드를 사용하면 된다.

 

1. DecimalFormat 클래스

https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

 

DecimalFormat 클래스는 NumberFormat 클래스를 상속한 구체 클래스다. 그렇기 때문에 NumberFormat의 방법과 다를 게 없다. format() 메서드를 통해 매개변수로 숫자를 받고 패턴에 맞는 문자열로 반환한다. 

    int price = 10_0000;
    DecimalFormat df = new DecimalFormat("###,###");
    String format1 = df.format(price);
    System.out.println(format1); // 1E5

 

2. NumberFormat 클래스

https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html

 

NumberFormat 클래스는 추상 클래스이기 때문에 인스턴스를 생성할 수 없고 대신 getInstance()를 통해 NumberFormat 객체를 가진다. 위의 선언부를 보면 NumberFormat 또한 Format 클래스를 상속한 것을 알 수 있는데 format() 메서드는 사실 Format 클래스로부터 온 것이다. 

    long amount = 200000000000L;
    NumberFormat nf = NumberFormat.getInstance();
    String format2 = nf.format(amount);
    System.out.println(format2); // 200,000,000,000

 

+ DateFormat 클래스 (SimpleDateFormat 클래스)

https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

 

마찬가지로 DateFormat 클래스 위에도 Format 클래스가 있다. 즉 DateFormat, SimpleFormat 모두 Format 클래스를 상속했다는 것이다. 그렇기 때문에 format() 메서드를 가지고 있어 비슷한 기능을 할 수 있다. 이 클래스는 주로 날짜와 시간을 다양한 형식으로 바꾸는 역할을 한다. 패턴은 공식 문서에 보기 쉽게 정리되어 있다.  

 

SimpleDateFormat is a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows for formatting (date → text), parsing (text → date), and normalization.

[출처: https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html ]

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");
        DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");

        try {
            Date d = df.parse("2025년 5월 5일"); // 문자열을 Date 객체로
            System.out.println(df2.format(d)); // Date 객체를 문자열로, 2025/05/05
        } catch(Exception e) {
            System.out.println("error occured!!!");
        }
    }
}

 

https://hobbytogether.tistory.com/68

 

[JAVA] 자바 천 단위(1,000) 숫자 3자리마다 콤마(,) 표시하기

자바에 천 단위(1,000)마다 콤마(,) 표시되도록 하기 오늘은 금액 데이터를 표시할때 천 단위마다 콤마가 표시되도록 해서 가독성을 향상시키는 방법에 대해 알아보도록 하겠습니다. 3자리마다 콤

hobbytogether.tistory.com

https://youngssse.tistory.com/entry/Java-%ED%98%95%EC%8B%9D%ED%99%94-Format

 

[Java] 형식화 (Format)

java.text 패키지에 포함되어 있으며 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화하였다. 예를 들어, 입력된 날짜에 대해서 출력할 때

youngssse.tistory.com