12345678 이라는 숫자에 ‘12,345,678’ 처럼 천 단위로 콤마를 찍어야 할 때가 있다. NumberFormat을 사용하면 콤마가 찍힌 String을 반환받는다.

int number = 12345678;
System.out.println(number);
// 12345678

String commaNum = NumberFormat.getInstance().format(number);
System.out.println(commaNum);
// 12,345,678


getInstance() 에 아무 것도 넣지 않으면 미국 스타일이 default 설정이 되어 천 단위로 콤마(,)가 찍힌다. 이는 getInstance(Locale.US)와 같은 결과를 반환한다. 독일어를 사용한다면 getInstance()를 했을 때 독일식 표기법대로 결과를 받는다. 정확한 설명은 JAVA SE 10 페이지에 이렇게 나와있다.

getInstance()

Returns a general-purpose number format for the current default FORMAT locale.

현재 기본 형식으로 설정된 범용 번호 형식을 반환한다.


// 독일어가 기본 설정일 경우
int number = 12345678;
String dotNum = NumberFormat.getInstance().format(number);
System.out.println(dotNum);
// 12.345.678
// NumberFormat.getInstance(Locale.GERMANY).format(number)와 같다.


만약 항상 콤마 찍힌 String 값을 얻어야 한다면 지역을 Locale.US로 하드코딩 해야겠지만, 빈 칸으로 두는 코드가 더 범용성있는 코드라고 생각된다.



References

  • https://stackoverflow.com/questions/7070209/converting-integer-to-string-with-comma-for-thousands
  • https://docs.oracle.com/javase/10/docs/api/java/text/NumberFormat.html