CompactNumberFormat

CompactNumberFormat (간결 숫자 형식)

십진수를 간결한 형태(compact form)로 형식화하는 NumberFormat의 구체 하위 클래스예요. 공간이 제한된 환경을 위해 설계되었고, LDML의 Compact Number Formats 명세로 정의돼요. 주어진 로케일의 패턴에 기반해 숫자를 더 짧은 형태로 표현해요.

출처: Java API Reference

본문

예를 들어 미국 로케일에서는 스타일에 따라 1000이 "1K", 1000000이 "1M"으로 형식화될 수 있어요. hi_IN 로케일에서는 1000이 "1 हज़ार", 50000000이 "5 क."으로 형식화될 수 있어요.

로케일에 대한 CompactNumberFormat을 얻으려면 NumberFormat이 제공하는 간결 숫자 형식 팩토리 메서드를 쓰면 돼요.

NumberFormat fmt = NumberFormat.getCompactNumberInstance(
    Locale.forLanguageTag("hi-IN"), NumberFormat.Style.SHORT);
String result = fmt.format(1000);

스타일 (Style)

숫자는 SHORTLONG 두 가지 스타일로 간결 형식화할 수 있어요. NumberFormat.getCompactNumberInstance(Locale, Style)SHORT 또는 LONG 간결 형식의 숫자를 형식화·파싱하는데, 주어진 Style 매개변수가 원하는 형식을 요청해요. 미국 로케일의 SHORT 스타일 인스턴스는 10000을 "10K"로 형식화하지만, 같은 로케일의 LONG 스타일 인스턴스는 10000을 "10 thousand"로 형식화해요.

간결 숫자 패턴

간결 숫자 패턴은 일련의 패턴으로 표현되는데, 각 패턴은 숫자의 범위를 형식화하는 데 쓰여요. 미국 로케일의 SHORT 스타일 간결 숫자 패턴 예는 {"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"}로, 10^0부터 10^14까지 범위에요. 패턴 수는 제한이 없고 인덱스 기준으로 10^0 범위부터 시작해요. 예를 들어 위 패턴에서 인덱스 3의 패턴("0K")은 1000 <= 수 < 10000을 형식화하고, 인덱스 4("00K")는 10000 <= 수 < 100000을 형식화해요.

대부분의 로케일에서 10^0~10^2 범위의 패턴은 빈 문자열인데, 이는 특수 패턴 "0"을 암시해요. 특수 패턴 "0"은 간결 패턴을 포함하지 않는 어떤 범위에도 쓰여요. 간결 패턴은 ;로 구분된 양수·음수 하위 패턴을 포함해요.

더 알아보기 (Learn more)

Java 공식 API