숫자 서식 지정

Flash Player 10.1 이상, Adobe AIR 2.0 이상

숫자 값의 표시 서식은 지역에 따라 크게 달라집니다. 예를 들어 특정 로캘에서 숫자 123456.78의 서식이 지정되는 방법은 다음과 같습니다.

로캘

숫자 서식

en-US(영어, 미국)

-123,456.78

de-DE(독일어, 독일)

-123.456,78

fr-FR(프랑스어, 프랑스)

-123 456,78

de-CH(독일어, 스위스)

-123'456.78

en-IN(영어, 인도)

-1,23,456.78

대부분의 아랍 로캘

123,456.78-

숫자 서식에 영향을 주는 요소는 다음과 같은 여러 가지가 있습니다.

  • 구분 기호. 소수점 구분 기호는 정수와 숫자의 소수 부분 사이에 오며 마침표, 쉼표 또는 기타 문자가 될 수 있습니다. 그룹화 구분 기호 또는 천 단위 구분 기호는 마침표, 쉼표, 단어 잘림 방지 공백 또는 기타 문자가 될 수 있습니다.

  • 그룹화 패턴. 소수점 왼쪽에 있는 각 그룹화 구분 기호 사이의 자릿수는 2-3개 또는 기타 값이 될 수 있습니다.

  • 음수 표시. 음수는 숫자 왼쪽 또는 오른쪽에 빼기 기호로 표시되거나 재무 응용 프로그램의 경우 괄호 안에 표시될 수 있습니다. 예를 들어 음수 19는 -19, 19- 또는 (19)로 표시될 수 있습니다.

  • 선행 및 후행 0. 일부 문화적 규칙에서는 선행 또는 후행 0을 표시되는 숫자로 추가합니다. 예를 들어 값 0.17은 .17, 0.17, 0.170 등으로 표시될 수 있습니다.

  • 정수 문자 세트. 힌디어, 아랍어, 일본어를 비롯한 여러 언어는 서로 다른 정수 문자 세트를 사용합니다. flash.globalization 패키지는 숫자 0-9에 매핑되는 모든 정수 문자 세트를 지원합니다.

NumberFormatter 클래스는 숫자 값의 서식을 지정할 때 이러한 모든 요인을 고려합니다.

NumberFormatter 클래스 사용

NumberFormatter 클래스는 특정 로캘의 규칙에 따라 숫자 값(int, uint 또는 Number 유형) 서식을 지정합니다.

다음 예제에서는 사용자의 운영 체제에서 제공되는 기본 서식 지정 속성을 사용하여 숫자 서식을 지정하는 가장 간단한 방법을 보여 줍니다.

var nf:NumberFormatter = new NumberFormatter(LocaleID.DEFAULT); 
trace(nf.formatNumber(-123456.789))

결과는 사용자의 로캘 설정 및 사용자 기본 설정에 따라 달라집니다. 예를 들어 사용자의 로캘이 fr-FR인 경우 값은 다음과 같이 서식 지정됩니다.

-123.456,789

사용자 설정에 관계없이 특정 로캘에 맞춰 숫자의 서식을 지정하려면 로캘 이름을 구체적으로 설정합니다. 예를 들면 다음과 같습니다.

var nf:NumberFormatter = new NumberFormatter("de-CH"); 
trace(nf.formatNumber(-123456.789));

이 경우 결과는 다음과 같습니다.

-123'456.789

formatNumber() 메서드는 매개 변수로 Number를 사용합니다. 또한 NumberFormatter 클래스는 입력 값으로 int를 사용하는 formatInt() 메서드와 unit를 사용하는 formatUint() 메서드를 가집니다.

다음 예와 같이 NumberFormatter 클래스의 속성을 설정하여 서식 지정 논리를 명시적으로 제어할 수 있습니다.

var nf:NumberFormatter = new NumberFormatter("de-CH"); 
nf.negativeNumberFormat = 0; 
nf.fractionalDigits = 5; 
nf.trailingZeros = true; 
nf.decimalSeparator = ","; 
nf.useGrouping = false; 
trace(nf.formatNumber(-123456.789)); //(123456.78900) 

이 예제에서는 먼저 NumberFormatter 객체를 만든 후 다음 작업을 수행합니다.

  • 재무 응용 프로그램에서와 같이 괄호를 사용하도록 음수 서식을 설정합니다.

  • 소수점 구분 기호 이후의 자릿수를 5로 설정합니다.

  • 소수 자릿수를 항상 5자리로 유지하기 위해 후행 0을 사용하도록 지정합니다.

  • 소수점 구분 기호를 쉼표로 설정합니다.

  • 포맷터에서 그룹화 구분 기호를 사용하지 않도록 지정합니다.

참고: 이러한 속성 중 일부가 변경되면 결과 숫자 서식이 더 이상 지정된 로캘의 기본 서식과 일치하지 않게 됩니다. 로캘 인식이 중요하지 않은 경우, 서식 부분(예: 후행 0 수)을 세부적으로 제어해야 하는 경우 또는 Windows 제어판 등을 통해 사용자가 직접 변경을 요청하는 경우에만 이러한 속성 중 일부를 사용합니다.

숫자 값이 포함된 문자열 파싱

또한 NumberFormatter 클래스는 로캘별 서식 지정 요구 사항에 맞게 문자열에서 숫자 값을 추출할 수 있습니다. NumberFormatter.parseNumber() 메서드는 문자열에서 단일 숫자 값을 추출합니다. 예를 들면 다음과 같습니다.

var nf:NumberFormatter = new NumberFormatter( "en-US" ); 
var inputNumberString:String =  "-1,234,567.890" 
var parsedNumber:Number = nf.parseNumber(inputNumberString); 
trace("Value:" + parsedNumber); // -1234567.89 
trace("Status:" + nf.lastOperationStatus); // noError

parseNumber() 메서드는 음수 부호 및 구분 기호와 같은 자릿수 및 숫자 서식 지정 문자만 포함하는 문자열을 처리합니다. 문자열에 다른 문자가 포함된 경우 오류 코드가 설정됩니다.

var nf:NumberFormatter = new NumberFormatter( "en-US" ); 
var inputNumberString:String =  "The value is 1,234,567.890" 
var parsedNumber:Number = nf.parseNumber(inputNumberString); 
trace("Value:" + parsedNumber); // NaN 
trace("Status:" + nf.lastOperationStatus); // parseError

영문자도 함께 포함된 문자열에서 숫자를 추출하려면 다음과 같이 NumberFormatter.parse() 메서드를 사용합니다.

var nf:NumberFormatter = new NumberFormatter( "en-US" ); 
var inputNumberString:String = "The value is 123,456,7.890"; 
var parseResult:NumberParseResult = nf.parse(inputNumberString); 
trace("Value:" + parseResult.value); // 1234567.89 
trace("startIndex: " + parseResult.startIndex); // 14 
trace("Status:" + nf.lastOperationStatus); // noError

parse() 메서드는 value 속성에 파싱된 숫자 값을 포함하는 NumberParseResult 객체를 반환합니다. startIndex 속성은 발견된 첫 번째 숫자의 인덱스를 나타냅니다. startIndex 및 endIndex 속성을 사용하여 숫자 앞과 뒤에 나오는 문자열 부분을 추출할 수 있습니다.