'통화형식'에 해당되는 글 1건

  1. 2008.06.16 통화 형식을 표현하는 NumberFormat의 currencyFormat()메서드

숫자에 국가의 통화표시를 하고 싶을 때는 뭐..그냥 개발하여도 되지만 NumberFormat에 currencyFormat()라는 것이 있으니 사용법을 살펴보자...

NumberFormat을 사용하여 10,000,000,000등의 값을 마스크를 적용하여 format이라는 메서드를 통해 반환받는것을 보았다. 반환시에 국가의 통화기호를 자동으로 붙여서 반환하도록 하기 위해서는 currencyFormat()를 사용하는데 format과 마찬가지로 국가를 선택하여야 한다. 국가가 없을 때는 심볼을 바꾸어 표시한다.

var numberFormat:NumberFormat = new NumberFormat( );
trace( numberFormat.currencyFormat(10000) )      // 출력 : €10,000.00
이처럼 currencyFormat을 사용하면 format()처럼 그루핑과 소수점을 분리하는데 앞이나 뒤에 국가의 화폐기호를 붙여준다. 위의 코드에서는 국가를 정하지 않았기 때문에 switch의 default인 " €(\u20AC) "를 출력하게 되었다. 따라서 국가 Locale을 정해서 넘겨야한다.

trace( numberFormat.currencyFormat(10000 , new Locale(Locale.KOREA) ) )
// 출력 : 10,000.00원

숫자뒤에 오는 파라미터에 국가를 설정하면 해당국가에 맞추어서 금액을 출력한다.
* 위의 결과는 한국에 맞게 NumberFormat와 Locale을 아래와 같이 수정하였습니다.
외국에서 만든 라이브러리 이므로 받아서 각자 수정해서 사용하도록 자리만 잡아두고 있어 정확한 화폐단위가 출력 되지 않습니다. 따라서 Locale클래스에 우리나라 국가를 추가하였다

...Loacle클래스
public static const KOREA:String = "kr";

그리고 NumberUtilities클래스의 case문에서 우리나라에 해당하는 자리를 수정하였다.
....NumberFormat
 case "kr":      
 // 원래 sv라는 족보도 없는 기호로 우리 국가명이 검색되었었다..이를 kr로 수정하였다.

          oSymbols.currency = "원";        
         // 이곳에 kr이라는 화폐기호가 있었다. 이것을 "원"으로 수정하였다

          oSymbols.group = bCurrency ? "," : " ";
          oSymbols.decimal = ".";
          oSymbols.before = false;
          break;
이처럼 수정하였다면 Locale.KOREA로 국가를 설정할 수 있다.

수정하기 싫으신 분들이나 1번정도만 다른  기호를 보여주어야 할 때 오브젝트를 통해 값을 그때 그때 마다 수정할 수 있다.

trace( numberFormat.currencyFormat(10000 ,
{ group:"," , decimal:"." , currency:"원" , before : false } ) )
// 출력 : 10,000.00원

두번째 파라미터에 오브젝트를 넘겨 각 심벌을 교체한다. currency는 화폐기호나 특정 심볼을 적으면 되고
before는 true이면 기호가 숫자앞에 위치하고 false면 숫자 뒤에 위치한다.

* format()과 심벌의 수정, 숫자의 mask를 알아보려면
NmberFormat 클래스를 이용한 공백이나 0의 삽입을 참고하면 된다



Posted by 버터백통