자바(Java)/JAVA 2SE

숫자의 포맷을 지정하는 NumberFormat 클래스

본클라쓰 2010. 12. 1. 16:36

 

 NumberFormat 클래스는 추상 클래스로 숫자의 포맷을 지정할 때 사용하는 클래스이다. NumberFormat 클래스는 팩토리 패턴을 사용하여 작성된 클래스이기 때문에 'new' 연산자를 사용하여 객체를 생성할 수 없고 getInstance()메소드를 사용하여 인스턴스를 얻는다.

 

NumberFormat 클래스로 표현할 수 있는 포맷의 종류는 다음과 같다.

  • 정수형
  • 통화 수치
  • 퍼센트

 

 각 포멧에 해당하는 NumberFormat 클래스를 생성할 때는 각 포멧에 해당하는 인스턴스 반환 메소드를 사용하는데 각 포멧에 따른 인스턴스 생성 메소드는 다음과 같다.

  • 정수형: getIntegerInstance()
  • 통화 수치: getCurrencyInstance()
  • 퍼센트: getPercentInstance()
일반적인 NumberFormat 객체 생성 방법: NumberFormat nf = NumberFormat.getInstance();

 

정수형 객체 생성 방법: NumberFormat nf = NumberFormat.getIntegerInstance();

 

통화수치 객체 생성 방법: NumberFormat nf = NumberFormat.getCurrencyInstance();

 

퍼센트 객체 생성 방법: NumberFormat nf = NumberFormat.getPercentInstance();

 

 NumberFormat 클래스는 문자열을 파라미터로 사용하는 parse() 메소드를 사용하면 포맷이 적용되어 있는 문자열을 Number 객체로 반환할 수 있다. java.lang.Number 클래스는 BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short 클래스의 슈퍼 클래스로 데이터를 해당 자료형에 맞게 반환하는 메소드를 가지고 있다. (Number 클래스 API 참조)

 

 

NumberFormat 클래스 사용예)

 try {
   NumberFormat format = NumberFormat.getInstance();

 

   String normalString = "1000";
   String decimalString = "1000.12";
   String separatorString = "1,000";
  
   // NumberFormat 클래스는 try catch 구문으로 항상 예외를 처리해야 한다.
   Number normal = format.parse(normalString);
   Number decimal = format.parse(decimalString);
   Number separator = format.parse(separatorString);


   System.out.println("정수형 : " + normal);
   System.out.println("통화      : " + decimal);
   System.out.println("퍼센트 : " + separator);
  
   // 정수형 테스트(소숫점을 버림)
   System.out.println("정수형 처리의 기본값은 : " + format.isParseIntegerOnly());
   format.setParseIntegerOnly(true);
   normal = format.parse(decimalString);
   System.out.println("정수형 테스트 : " + normal + "(" + format.isParseIntegerOnly() + ")");
   
   System.out.println("일반 숫자 : " + format.format(normal));
  
   format = NumberFormat.getCurrencyInstance();
   System.out.println("통화            :" + format.format(normal));
     
   format = NumberFormat.getPercentInstance();
   System.out.println("퍼센트       : " + format.format(normal));
     
  } catch(Exception e){
   e.printStackTrace();
  }