통화 값 서식 지정

Flash Player 10.1 이상, Adobe AIR 2.0 이상

통화 값 표시 서식도 숫자 서식만큼이나 다양합니다. 예를 들어 특정 로캘에서 미국 달러 값 $123456.78의 서식이 지정되는 방법은 다음과 같습니다.

로캘

숫자 서식

en-US(영어, 미국)

$123,456.78

de-DE(독일어, 독일)

123.456,78 $

en-IN(영어, 인도)

$ 1,23,456.78

통화 서식 지정에 영향을 주는 요소는 숫자 서식의 경우와 모두 동일하며 추가로 다음 요소가 적용됩니다.

  • 통화 ISO 코드. 사용되는 실제 로캘에 대한 3자리 문자 ISO 4217 통화 코드입니다(예: USD 또는 EUR).

  • 통화 심볼. 사용되는 실제 로캘에 대한 통화 심볼 또는 문자열입니다(예: $ 또는 €).

  • 음수 통화 서식. 통화 금액의 숫자 부분과 관련하여 통화 심볼 및 음수 심볼 또는 괄호의 위치를 정의합니다.

  • 양수 통화 서식 통화 금액의 숫자 부분과 관련하여 통화 심볼의 위치를 정의합니다.

CurrencyFormatter 클래스 사용

CurrencyFormatter 클래스는 특정 로캘 규칙에 따라 숫자 값을 통화 문자열 및 서식 지정된 숫자를 포함하는 문자열 형식으로 지정합니다.

새 CurrencyFormatter 객체를 인스턴스화하면 이 객체가 지정된 로캘에 대한 기본 통화로 통화를 설정합니다.

다음 예제에서는 독일어 로캘을 사용하여 생성된 CurrencyFormatter 객체가 통화 금액을 유로로 간주함을 보여 줍니다.

var cf:CurrencyFormatter = new CurrencyFormatter( "de-DE" ); 
trace(cf.format(1234567.89)); // 1.234.567,89 EUR

대부분의 경우 로캘의 기본 통화에 의존하는 것은 바람직하지 않습니다. 사용자의 기본 로캘이 지원되지 않는 경우 CurrencyFormatter 클래스가 폴백 로캘을 할당하는데, 폴백 로캘의 기본 통화가 다를 수 있습니다. 또한 금액을 사용자의 현지 통화로 표시하지 않는 경우에도 일반적으로 통화 서식은 사용자에게 적합하게 나타내야 합니다. 예를 들어 캐나다 사용자가 독일 회사의 가격을 유로 단위로 보지만 캐나다에서 사용하는 통화 서식으로 표시하길 원할 수 있습니다.

CurrencyFormatter.setCurrency() 메서드는 사용할 정확한 통화 문자열과 통화 심볼을 지정합니다.

다음 예제에서는 캐나다의 프랑스어 사용 지역에서 통화 금액을 유로로 표시하는 경우를 보여 줍니다.

var cf:CurrencyFormatter = new CurrencyFormatter( "fr-CA" ); 
cf.setCurrency("EUR", "€"); 
trace(cf.format(1234567.89)); // 1.234.567,89 EUR

또한 setCurrency() 메서드를 사용하면 명확한 통화 심볼을 설정하여 혼동을 줄일 수 있습니다. 예를 들면 다음과 같습니다.

cf.setCurrency("USD","US$");

format() 메서드는 기본적으로 통화 심볼 대신에 3문자 ISO 4217 통화 코드를 표시합니다. ISO 4217 코드는 명확하며 지역화할 필요가 없습니다. 하지만 많은 사용자는 ISO 코드보다는 통화 심볼 표시를 선호합니다.

CurrencyFormatter 클래스는 서식이 지정된 통화 문자열에 어떤 통화 심볼(예: 달러 기호 또는 유로 기호)을 사용할지 또는 3문자 ISO 통화 문자열(예: USD 또는 EUR)을 사용할지를 결정하는 데 도움이 됩니다. 예를 들어 캐나다에 있는 사용자에게는 캐나다 달러 금액을 $200으로, 미국에 있는 사용자에게는 CAD 200으로 표시할 수 있습니다. formattingWithCurrencySymbolIsSafe() 메서드를 사용하면 해당 금액의 통화 심볼이 사용자의 로캘 설정에 따라 모호하거나 부정확한지 확인할 수 있습니다.

다음 예에서는 금액을 유로로 표시하지만 en-US 로캘에 적합한 서식으로 지정하는 방법을 보여 줍니다. 사용자의 로캘에 따라 ISO 통화 코드 또는 통화 심볼이 출력 문자열에 사용됩니다.

var cf:CurrencyFormatter = new CurrencyFormatter( "en-CA"); 
 
if (cf.formattingWithCurrencySymbolIsSafe("USD")) 
{ 
    trace(cf.format(1234567.89, true)); // $1,234,567.89 
} 
else 
{ 
    cf.setCurrency("USD", "$"); 
    trace(cf.format(1234567.89)); // USD1,234,567.89 
}

통화 값이 포함된 문자열 파싱

CurrencyFormatter 클래스는 로캘별 서식 지정 요구 사항에 맞게 입력 문자열에서 통화 금액과 통화 문자열을 추출할 수 있습니다. 다음과 같이 CurrencyFormatter.parse() 메서드는 파싱된 금액 및 통화 문자열을 CurrencyParseResult 객체에 저장합니다.

var cf:CurrencyFormatter = new CurrencyFormatter( "en-US" ); 
var inputCurrencyString:String = "(GBP 123,56,7.890)"; 
var parseResult:CurrencyParseResult = cf.parse(inputCurrencyString); 
trace("parsed amount: " + parseResult.value); // -1234567.89 
trace("currencyString: " + parseResult.currencyString ); // GBP

입력 문자열의 통화 문자열 부분에는 통화 심볼, 통화 ISO 코드 및 추가 텍스트 문자가 포함될 수 있습니다. 통화 문자열, 음수 표시 및 숫자 값의 위치는 negativeCurrencyFormat 및 positiveCurrencyFormat 속성으로 지정된 서식과 일치합니다. 예를 들면 다음과 같습니다.

var cf:CurrencyFormatter = new CurrencyFormatter( "en-US" ); 
var inputCurrencyString:String = "Total $-123,56,7.890"; 
var parseResult:CurrencyParseResult = cf.parse(inputCurrencyString); 
trace("status: " + cf.lastOperationStatus ); // parseError 
trace("parsed amount: " + parseResult.value); // NaN 
trace("currencyString: " + parseResult.currencyString ); // 
cf.negativeCurrencyFormat = 2; 
parseResult = cf.parse(inputCurrencyString); 
trace("status: " + cf.lastOperationStatus ); // noError 
trace("parsed amount: " + parseResult.value); // -123567.89 
trace("currencyString: " + parseResult.currencyString ); // Total $                

이 예제에서는 입력 문자열에서 통화 문자열 다음에 빼기 부호와 숫자가 포함되어 있습니다. 그러나 en-US 로캘의 기본 negativeCurrencyFormat 값에 따라 음수 표시가 먼저 와야 하므로 parse() 메서드에서 오류가 발생하고 파싱된 값이 NaN이 됩니다.

통화 문자열이 먼저 오도록 negativeCurrencyFormat 값을 2로 설정하면 parse() 메서드가 성공합니다.