Internationalization NumberFormatter 클래스

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)


소개

프로그램은 로케일 독립적인 이진 표현을 사용하여 숫자를 저장하고 작동합니다. 숫자를 표시하거나 인쇄할 때 로케일별 문자열로 변환됩니다. 예를 들어, 숫자 12345.67은 미국에서 "12,345.67", 프랑스에서 "12 345,67", 독일에서 "12.345,67"입니다.

NumberFormatter 클래스에서 제공하는 메소드를 호출하여 지정된 로케일 또는 기본 로케일에 따라 숫자, 통화 및 백분율의 형식을 지정할 수 있습니다. NumberFormatter는 로케일을 구분하므로 각 로케일에 대해 새 NumberFormatter를 생성해야 합니다. NumberFormatter 메소드는 double과 같은 기본 유형 숫자의 형식을 지정하고 숫자를 로케일별 문자열로 출력합니다.

통화의 경우 통화 형식 유형을 사용하여 형식이 지정된 숫자와 적절한 통화 기호가 있는 문자열을 반환하는 포맷터를 만들 수 있습니다. 물론 NumberFormatter 클래스는 환율을 인식하지 못하므로 지정된 통화에 관계없이 숫자 출력이 동일합니다. 즉, 같은 숫자라도 통화 로케일에 따라 통화 가치가 다릅니다. 숫자가 9988776.65인 경우 결과는 다음과 같습니다.

  • 9 988 776,65 € in France
  • 9.988.776,65 € in Germany
  • $9,988,776.65 in the United States

백분율 형식을 지정하려면 백분율 형식 유형을 사용하여 로케일별 포맷터를 만드십시오. 이 포맷터를 사용하면 0.75와 같은 소수가 75%로 표시됩니다.

철자가 있는 숫자와 같은 더 복잡한 형식의 경우 규칙 기반 숫자 형식기가 사용됩니다.


클래스 개요

class NumberFormatter {
  /* Methods */
  public __construct(string $locale, int $style, ?string $pattern = null)
  public static create(string $locale, int $style, ?string $pattern = null): ?NumberFormatter
  public formatCurrency(float $amount, string $currency): string|false
  public format(int|float $num, int $type = NumberFormatter::TYPE_DEFAULT): string|false
  public getAttribute(int $attribute): int|float|false
  public getErrorCode(): int
  public getErrorMessage(): string
  public getLocale(int $type = ULOC_ACTUAL_LOCALE): string|false
  public getPattern(): string|false
  public getSymbol(int $symbol): string|false
  public getTextAttribute(int $attribute): string|false
  public parseCurrency(string $string, string &$currency, int &$offset = null): float|false
  public parse(string $string, int $type = NumberFormatter::TYPE_DOUBLE, int &$offset = null): int|float|false
  public setAttribute(int $attribute, int|float $value): bool
  public setPattern(string $pattern): bool
  public setSymbol(int $symbol, string $value): bool
  public setTextAttribute(int $attribute, string $value): bool
}
                

미리 정의된 상수

이러한 스타일은 numfmt_create()에서 포맷터의 유형을 정의하는 데 사용됩니다.

NumberFormatter::PATTERN_DECIMAL (int)
패턴으로 정의된 10진수 형식
NumberFormatter::DECIMAL (int)
10진수 형식
NumberFormatter::CURRENCY (int)
통화 형식
NumberFormatter::PERCENT (int)
백분율 형식
NumberFormatter::SCIENTIFIC (int)
과학적 형식
NumberFormatter::SPELLOUT (int)
철자 규칙 기반 형식
NumberFormatter::ORDINAL (int)
서수 규칙 기반 형식
NumberFormatter::DURATION (int)
기간 규칙 기반 형식
NumberFormatter::PATTERN_RULEBASED (int)
패턴으로 정의된 규칙 기반 형식
NumberFormatter::CURRENCY_ACCOUNTING (int)
회계용 통화 형식(예: -$3.00 대신 음수 통화 금액의 경우 ($3.00)). PHP 7.4.1 및 ICU 53부터 사용 가능합니다.
NumberFormatter::DEFAULT_STYLE (int)
로케일의 기본 형식
NumberFormatter::IGNORE (int)
PATTERN_DECIMAL의 별칭

이러한 상수는 숫자가 구문 분석되거나 형식이 지정되는 방법을 정의합니다. numfmt_format()numfmt_parse()에 대한 인수로 사용해야 합니다.

NumberFormatter::TYPE_DEFAULT (int)
변수 유형에서 유형 파생
NumberFormatter::TYPE_INT32 (int)
32비트 정수로 형식화/분석
NumberFormatter::TYPE_INT64 (int)
64비트 정수로 형식화/분석
NumberFormatter::TYPE_DOUBLE (int)
부동 소수점 값으로 형식화/분석
NumberFormatter::TYPE_CURRENCY (int)
통화 값으로 형식 지정/분석

numfmt_get_attribute()numfmt_set_attribute()에서 사용하는 숫자 형식 속성입니다.

NumberFormatter::PARSE_INT_ONLY (int)
정수만 구문 분석합니다.
NumberFormatter::GROUPING_USED (int)
그룹화 구분 기호를 사용하십시오.
NumberFormatter::DECIMAL_ALWAYS_SHOWN (int)
항상 소수점을 표시합니다.
NumberFormatter::MAX_INTEGER_DIGITS (int)
최대 정수 자릿수.
NumberFormatter::MIN_INTEGER_DIGITS (int)
최소 정수 자릿수.
NumberFormatter::INTEGER_DIGITS (int)
정수입니다.
NumberFormatter::MAX_FRACTION_DIGITS (int)
최대 분수 자릿수.
NumberFormatter::MIN_FRACTION_DIGITS (int)
최소 분수 자릿수.
NumberFormatter::FRACTION_DIGITS (int)
분수 숫자.
NumberFormatter::MULTIPLIER (int)
승수.
NumberFormatter::GROUPING_SIZE (int)
그룹화 크기.
NumberFormatter::ROUNDING_MODE (int)
반올림 모드.
NumberFormatter::ROUNDING_INCREMENT (int)
반올림 증분.
NumberFormatter::FORMAT_WIDTH (int)
format()의 출력이 채워지는 너비입니다.
NumberFormatter::PADDING_POSITION (int)
패딩이 발생할 위치입니다. 가능한 인수 값은 패드 위치 상수를 참조하십시오.
NumberFormatter::SECONDARY_GROUPING_SIZE (int)
보조 그룹화 크기.
NumberFormatter::SIGNIFICANT_DIGITS_USED (int)
유효 숫자를 사용하십시오.
NumberFormatter::MIN_SIGNIFICANT_DIGITS (int)
최소 유효 자릿수.
NumberFormatter::MAX_SIGNIFICANT_DIGITS (int)
최대 유효 자릿수.
NumberFormatter::LENIENT_PARSE (int)
규칙 기반 형식에서 사용하는 관대한 구문 분석 모드입니다.

numfmt_get_text_attribute()numfmt_set_text_attribute()에서 사용하는 숫자 형식 텍스트 속성입니다.

NumberFormatter::POSITIVE_PREFIX (int)
양수 접두사.
NumberFormatter::POSITIVE_SUFFIX (int)
긍정적인 접미사.
NumberFormatter::NEGATIVE_PREFIX (int)
음수 접두사.
NumberFormatter::NEGATIVE_SUFFIX (int)
부정적인 접미사.
NumberFormatter::PADDING_CHARACTER (int)
형식 너비로 채우는 데 사용되는 문자입니다.
NumberFormatter::CURRENCY_CODE (int)
ISO 통화 코드입니다.
NumberFormatter::DEFAULT_RULESET (int)
기본 규칙 집합입니다. 이것은 규칙 기반 포맷터에서만 사용할 수 있습니다.
NumberFormatter::PUBLIC_RULESETS (int)
공개 규칙 집합입니다. 이것은 규칙 기반 포맷터에서만 사용할 수 있습니다. 읽기 전용 속성입니다. 공개 규칙 세트는 각 규칙 세트 이름이 ';'로 구분된 단일 문자열로 반환됩니다. (세미콜론).

numfmt_get_symbol()numfmt_set_symbol()에서 사용하는 숫자 형식 기호입니다.

NumberFormatter::DECIMAL_SEPARATOR_SYMBOL (int)
소수 구분 기호입니다.
NumberFormatter::GROUPING_SEPARATOR_SYMBOL (int)
그룹화 구분 기호입니다.
NumberFormatter::PATTERN_SEPARATOR_SYMBOL (int)
패턴 구분자.
NumberFormatter::PERCENT_SYMBOL (int)
백분율 기호입니다.
NumberFormatter::ZERO_DIGIT_SYMBOL (int)
Zero.
NumberFormatter::DIGIT_SYMBOL (int)
패턴의 숫자를 나타내는 문자입니다.
NumberFormatter::MINUS_SIGN_SYMBOL (int)
빼기 기호입니다.
NumberFormatter::PLUS_SIGN_SYMBOL (int)
더하기 기호입니다.
NumberFormatter::CURRENCY_SYMBOL (int)
통화 기호입니다.
NumberFormatter::INTL_CURRENCY_SYMBOL (int)
국제 통화 기호입니다.
NumberFormatter::MONETARY_SEPARATOR_SYMBOL (int)
화폐 구분 기호입니다.
NumberFormatter::EXPONENTIAL_SYMBOL (int)
지수 기호입니다.
NumberFormatter::PERMILL_SYMBOL (int)
밀 기호 당.
NumberFormatter::PAD_ESCAPE_SYMBOL (int)
패딩 문자를 이스케이프합니다.
NumberFormatter::INFINITY_SYMBOL (int)
무한대 기호입니다.
NumberFormatter::NAN_SYMBOL (int)
숫자가 아닌 기호.
NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL (int)
유효 숫자 기호입니다.
NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL (int)
통화 그룹 구분 기호입니다.

NumberFormatter::ROUNDING_MODE 속성과 함께 numfmt_get_attribute()numfmt_set_attribute()에서 사용하는 반올림 모드 값.

NumberFormatter::ROUND_CEILING (int)
양의 무한대로 반올림하는 반올림 모드.
NumberFormatter::ROUND_DOWN (int)
0을 향해 반올림하는 반올림 모드입니다.
NumberFormatter::ROUND_FLOOR (int)
음의 무한대로 반올림하는 반올림 모드입니다.
NumberFormatter::ROUND_HALFDOWN (int)
두 이웃이 같은 거리에 있지 않은 경우 "가장 가까운 이웃"을 향해 반올림하는 반올림 모드(이 경우 내림).
NumberFormatter::ROUND_HALFEVEN (int)
두 이웃이 같은 거리에 있지 않으면 "가장 가까운 이웃"을 향해 반올림하는 반올림 모드입니다. 이 경우에는 짝수 이웃을 향해 반올림합니다.
NumberFormatter::ROUND_HALFUP (int)
두 이웃이 같은 거리에 있지 않는 한 "가장 가까운 이웃"을 향해 반올림하는 반올림 모드(이 경우 반올림).
NumberFormatter::ROUND_UP (int)
0에서 반올림하는 반올림 모드입니다.

NumberFormatter::PADDING_POSITION 속성과 함께 numfmt_get_attribute()numfmt_set_attribute()에서 사용하는 패드 위치 값.

NumberFormatter::PAD_AFTER_PREFIX (int)
접두사 뒤에 삽입된 패드 문자.
NumberFormatter::PAD_AFTER_SUFFIX (int)
접미사 뒤에 삽입된 패드 문자.
NumberFormatter::PAD_BEFORE_PREFIX (int)
접두사 앞에 삽입된 패드 문자.
NumberFormatter::PAD_BEFORE_SUFFIX (int)
접미사 앞에 삽입된 패드 문자.

기타


목차