천단위 숫자마다 콤마(,)를 넣는 방법에 대해서 알아보겠습니다.

아래와 같이 숫자에, 읽기 쉽게 천단위 마다 쉼표를 추가하려고 합니다.

123456 -> 123,456
1234567 -> 1,234,567

1. DecimalFormat를 이용한 방법

double 자료형의 숫자를 천단위마다 쉼표를 넣고 문자열로 변경하는 예제입니다. 소수가 있는 경우, 소수 2자리까지 출력하도록 했습니다.

  • new DecimalFormat("#,###.00") : 천단위마다 쉼표 추가, 소수 2자리의 숫자로 변환하는 포맷
  • 소수점 이하 숫자를 버리고 정수만 허용하려면 "#,###" 포맷을 사용하면 됨
  • decimalFormat.format(number) : number에 포맷을 적용한 문자열 리턴
import java.text.DecimalFormat;

public class Example {

    public static void main(String[] args) {

        double number = 1234567.89; // 쉼표를 추가할 숫자

        // 천 단위 쉼표, 소수는 두자리까지 출력
        DecimalFormat decimalFormat = new DecimalFormat("#,###.00");
        String formattedNumber = decimalFormat.format(number);
        System.out.println("Result: " + formattedNumber);
    }
}

Output:

Result: 1,234,567.89

2. String.format()을 이용한 방법

String.format(format, number)로 숫자에 포맷을 적용할 수도 있습니다.

  • String.format("%,.2f", number) : 포맷 적용한 문자열 리턴, 천단위마다 쉼표 추가, 소수 2자리까지
  • String.format("%,.0f", number) : 천단위마다 쉼표 추가, 소수는 버림
import java.text.DecimalFormat;

public class Example {

    public static void main(String[] args) {

        double number = 1234567.89; // 쉼표를 추가할 숫자

        // 천 단위 쉼표, 소수는 두자리까지 출력
        String formattedNumber = String.format("%,.2f", number);
        System.out.println("Result: " + formattedNumber);

        // 천 단위 쉼표, 소수는 모두 버림
        formattedNumber = String.format("%,.0f", number);
        System.out.println("Result: " + formattedNumber);
    }
}

Output:

Result: 1,234,567.89
Result: 1,234,568

3. NumberFormat을 이용한 방법

NumberFormat는 특정 국가의 숫자 표현 방식으로 숫자 포맷을 변환합니다.

US의 숫자 포맷은 천단위 마다 쉼표를 추가하기 때문에, 이것을 이용하여 아래와 같이 변환할 수 있습니다.

import java.text.NumberFormat;
import java.util.Locale;

public class Example {

    public static void main(String[] args) {

        double number = 1234567.89; // 쉼표를 추가할 숫자

        // US의 숫자 포맷은 천단위 마다 쉼표를 추가, 소수는 모두 허용
        NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);

        // number를 US 포맷을 적용하여 문자열 변환
        String formattedNumber = numberFormat.format(number);
        System.out.println("Result: " + formattedNumber);
    }
}

Output:

Result: 1,234,567.89