본문 바로가기
프로그래밍/JAVA

[Java] 자바 금액 숫자 콤마 넣기, 천단위 콤마찍기 (금액표시)

by 천상IT 2022. 1. 12.
반응형

안녕하세요.

자바에서 금액을 표시할 때 천단위 콤마(,)를 넣는 방법을 알아보겠습니다.

금액을 읽기 편하기위해서는 숫자사이에 콤마를 넣어주어야합니다. 막상 구현하려고 하면 어떻게해야하는지 난감하죠. 그래서 이 블로그에 소스와 함께 숫자에 콤마찍는 방법을 설명해두겠습니다.

 

숫자에 콤마 찍기

예) 3125121 -> 3,125,121

 

중요한 것은 숫자 int형이나 long형이라면 콤마를 넣을때는 String 문자열이 된다는 점입니다. 

자바에서 숫자 사이에 콤마( , )를 찍는 방법은 java.text.DecimalFormat 클래스를 활용하는 방법과 정규식을 활용하는 방법의 2가지가 대표적입니다. 소스로 보시는게 편하겠죠.

 

1.  java.text.DecimalFormat 클래스를 이용해서 콤마찍기

int amount = 99999999999;
DecimalFormat df = new DecimalFormat("###,###");
String money = df.format(amount);
System.out.println(money);

결과

99,999,999,999

DecimalFormat 은 NumberFormat 을 상속받고 있습니다. 
DecimalFormat(String pattern)를 이용하여 패턴을 입력합니다. 

2. 자바 정규식을 활용하여 콤마찍기

String amount = "99999999999";
amount = amount.replaceAll("\\B(?=(\\d{3})+(?!\\d))", ",");
System.out.println(amount);

결과

99,999,999,999

 

위에서도 말씀드렸지만 콤마가 들어간 금액숫자는 문자열 String입니다. 취급할때 문자로 취급해서 사용해주시면 됩니다. 그럼 오늘도 코딩으로 스트레스 받지 마시고 즐거운 코딩라이프 되세요~

 

 

참고 Class NumberFormat

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

 

NumberFormat (Java Platform SE 7 )

Parses text from a string to produce a Number. The method attempts to parse text starting at the index given by pos. If parsing succeeds, then the index of pos is updated to the index after the last character used (parsing does not necessarily use all char

docs.oracle.com

공개 추상 클래스 NumberFormat 
확장 형식
NumberFormat모든 숫자 형식에 대한 추상 기본 클래스입니다. 이 클래스는 숫자 형식을 지정하고 구문 분석하기 위한 인터페이스를 제공합니다. NumberFormat또한 숫자 형식이 있는 로케일과 해당 이름을 판별하는 방법을 제공합니다.

NumberFormat모든 로케일에 대한 숫자의 형식을 지정하고 구문 분석하는 데 도움이 됩니다. 코드는 소수점, 천 단위 구분 기호 또는 사용된 특정 십진수 또는 숫자 형식이 십진수인지 여부에 대한 로케일 규칙과 완전히 독립적일 수 있습니다.

현재 로케일의 숫자 형식을 지정하려면 팩토리 클래스 메소드 중 하나를 사용하십시오.

  myString = NumberFormat.getInstance().format(myNumber);
 
여러 숫자의 형식을 지정하는 경우 형식을 가져와 여러 번 사용하는 것이 더 효율적이므로 시스템이 현지 언어 및 국가 규칙에 대한 정보를 여러 번 가져올 필요가 없습니다.
 NumberFormat nf = NumberFormat.getInstance();
 for (int i = 0; i < myNumber.length; ++i) {
     output.println(nf.format(myNumber[i]) + "; ");
 }
 
다른 로케일에 대한 숫자 형식을 지정하려면 에 대한 호출에서 지정하십시오 getInstance.
 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
 
NumberFormat숫자를 구문 분석 하는  사용할 수도 있습니다 .
 myNumber = nf.parse(myString);

 

 

 

반응형

댓글