Класс CompactNumberFormat
- Все реализованные интерфейсы:
-
Serializable,Cloneable
public final class CompactNumberFormat extends NumberFormat
Класс CompactNumberFormat — это конкретный подкласс NumberFormat, который форматирует десятичное число в компактной форме. Компактное форматирование чисел предназначено для сред, где ограничено пространство, и отформатированная строка может быть отображена в этом ограниченном пространстве. Оно определено спецификацией LDML для компактных форматов чисел. Компактное форматирование чисел относится к представлению числа в более короткой форме, на основе шаблонов, предоставленных для данного регионального варианта.
Например:
В регионе US locale, 1000 может быть отформатировано как "1K", а 1000000 как "1M", в зависимости от используемого стиля.
В регионе "hi_IN" 1000 может быть отформатировано как "1 हà¤à¤¼à¤¾à¤°", а 50000000 как "5 à¤.", в зависимости от используемого стиля.
Чтобы получить CompactNumberFormat для регионального варианта, используйте один из методов фабрики, предоставляемых NumberFormat для компактного форматирования чисел. Например, NumberFormat.getCompactNumberInstance(Locale, Style).
NumberFormat fmt = NumberFormat.getCompactNumberInstance( Locale.forLanguageTag("hi-IN"), NumberFormat.Style.SHORT); String result = fmt.format(1000);
Стиль
Число можно отформатировать в компактной форме с двумя различными стилями, SHORT и LONG. Используйте NumberFormat.getCompactNumberInstance(Locale, Style) для форматирования и разбора числа в SHORT или LONG компактной форме, где заданный параметр Style указывает требуемый формат. SHORT стиль компактного представления чисел в регионе US locale форматирует 10000 как "10K". Однако, LONG стиль в том же регионе форматирует 10000 как "10 thousand".
Шаблоны компактных чисел
Шаблоны компактных чисел представлены рядом шаблонов, где каждый шаблон используется для форматирования диапазона чисел. Пример SHORT стилизованных шаблонов компактных чисел для региона US locale — это {"", "", "", "0K",
"00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"}, варьирующийся от 100 до 1014. Может быть любое количество шаблонов, и они строго основаны на индексах, начиная с диапазона 100. Например, в приведенных выше шаблонах шаблон с индексом 3 ("0K") используется для форматирования number >= 1000 and number < 10000, шаблон с индексом 4 ("00K") используется для форматирования number >= 10000 and number < 100000 и так далее. В большинстве региональных вариантов шаблоны с диапазоном 100—102 являются пустыми строками, что подразумевает специальный шаблон "0". Специальный шаблон "0" используется для любого диапазона, который не содержит компактный шаблон. Этот специальный шаблон может быть указан явно для любого определенного диапазона или рассматриваться как шаблон по умолчанию для пустой строки.
Компактный шаблон содержит положительный и отрицательный подшаблон, разделенные символом границы подшаблона ';' (U+003B), например, "0K;-0K". Каждый подшаблон имеет префикс, минимальное количество целых цифр и суффикс. Отрицательный подшаблон является необязательным; если его нет, то положительный подшаблон с префиксом минус ('-' U+002D HYPHEN-MINUS) используется в качестве отрицательного подшаблона. То есть, "0K" эквивалентно "0K;-0K". Если есть явный отрицательный подшаблон, он служит только для указания отрицательного префикса и суффикса. Количество минимальных целых цифр и другие характеристики одинаковы для положительного шаблона. Это означает, что "0K;-00K" создает точно такой же результат, как "0K;-0K".
Многие символы в компактном шаблоне интерпретируются буквально; они сопоставляются во время разбора и выводятся без изменений при форматировании. Специальные символы, с другой стороны, представляют другие символы, строки или классы символов. Они должны быть заключены в одинарные кавычки ' (U+0027), если они должны появиться в префиксе или суффиксе как литералы. Например, 0à¤'.'.
Множественное число
В случае, если для локализации требуется, чтобы шаблоны компактных чисел были разными для множественного числа, каждый единичный и множественный шаблон может быть перечислен в паре фигурных скобок '{' (U+007B) и '}' (U+007D), разделенных пробелом ' ' (U+0020). Если используется этот формат, каждый шаблон должен быть дополнен своим count, за которым следует двоеточие ':' (U+003A). Если шаблон включает пробелы буквально, они должны быть заключены в кавычки.
Например, шаблон компактного числа, представляющий миллионы в немецкой локали, может быть указан как "{one:0' 'Million other:0' 'Millionen}". count следует правилам множественного числа LDML Language Plural Rules.
Компактный шаблон имеет следующий синтаксис:
Pattern:
SimplePattern
'{' PluralPattern [' ' PluralPattern]optional '}'
SimplePattern:
PositivePattern
PositivePattern [; NegativePattern]optional
PluralPattern:
Count:SimplePattern
Count:
"zero" / "one" / "two" / "few" / "many" / "other"
PositivePattern:
Prefixoptional MinimumInteger Suffixoptional
NegativePattern:
Prefixoptional MinimumInteger Suffixoptional
Prefix:
Any Unicode characters except U+FFFE, U+FFFF, and
special characters.
Suffix:
Any Unicode characters except U+FFFE, U+FFFF, and
special characters.
MinimumInteger:
0
0 MinimumInteger
Форматирование
По умолчанию поведение форматирования возвращает отформатированную строку без дробной части, однако пользователи могут использовать методsetMinimumFractionDigits(int) для включения дробной части. Число 1000.0 или 1000 форматируется как "1K", а не как "1.00K" (в регионе US locale). По этой причине предоставленные шаблоны для форматирования содержат только минимальное количество целых цифр, префикс и/или суффикс, но не дробную часть. Например, используемые шаблоны — {"", "", "", 0K, 00K, ...}. Если шаблон, выбранный для форматирования числа, является "0" (специальный шаблон), явным или по умолчанию, то используется общее форматирование чисел, предоставляемое DecimalFormat для указанного регионального варианта. Разбор
По умолчанию поведение разбора не допускает разделитель группировки, пока разделитель группировки не будет установлен вtrue с помощью setGroupingUsed(boolean). Разбор дробной части зависит от isParseIntegerOnly(). Например, если разбор целой части только установлен в true, то дробная часть пропускается. Округление
CompactNumberFormat предоставляет режимы округления, определённые в RoundingMode для форматирования. По умолчанию используется RoundingMode.HALF_EVEN.- С:
- 12
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе java.text.NumberFormat
NumberFormat.Field, NumberFormat.Style
Краткое описание полей
Поля, объявленные в классе java.text.NumberFormat
FRACTION_FIELD, INTEGER_FIELD
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
CompactNumberFormat |
Создаёт CompactNumberFormat с использованием заданного шаблона десятичных чисел, символов формата десятичных чисел и компактных шаблонов. |
CompactNumberFormat |
Создаёт CompactNumberFormat с использованием заданного шаблона десятичных чисел, символов формата десятичных чисел, компактных шаблонов и правил множественного числа. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CompactNumberFormat |
clone() |
Создаёт и возвращает копию этого экземпляра CompactNumberFormat. |
boolean |
equals |
Проверяет, равен ли этот экземпляр CompactNumberFormat заданному экземпляру obj. |
StringBuffer |
format |
Форматирует double, чтобы получить строку, представляющую его компактную форму. |
StringBuffer |
format |
Форматирует long, чтобы получить строку, представляющую его компактную форму. |
final StringBuffer |
format |
Форматирует число, чтобы получить строку, представляющую его компактную форму. |
AttributedCharacterIterator |
formatToCharacterIterator |
Форматирует объект, создавая AttributedCharacterIterator. |
int |
getGroupingSize() |
Возвращает размер группировки. |
RoundingMode |
getRoundingMode() |
Возвращает RoundingMode, используемый в этом экземпляре CompactNumberFormat. |
int |
hashCode() |
Возвращает хэш-код для этого экземпляра CompactNumberFormat. |
boolean |
isGroupingUsed() |
Возвращает true, если в этом формате используется группировка. |
boolean |
isParseBigDecimal() |
Возвращает, возвращает ли метод parse(String, ParsePosition) BigDecimal. |
boolean |
isParseIntegerOnly() |
Возвращает true, если этот формат анализирует только целое число из числовой части компактного числа. |
Number |
parse |
Анализирует компактное число из строки, чтобы получить Number. |
void |
setGroupingSize |
Устанавливает размер группировки. |
void |
setGroupingUsed |
Устанавливает, будет ли использоваться группировка в этом формате. |
void |
setMaximumFractionDigits |
Устанавливает максимальное количество цифр, разрешенных в дробной части числа. |
void |
setMaximumIntegerDigits |
Устанавливает максимальное количество цифр, разрешенных в целой части числа. |
void |
setMinimumFractionDigits |
Устанавливает минимальное количество цифр, разрешенных в дробной части числа. |
void |
setMinimumIntegerDigits |
Устанавливает минимальное количество цифр, разрешенных в целой части числа. |
void |
setParseBigDecimal |
Устанавливает, возвращает ли метод parse(String, ParsePosition) BigDecimal. |
void |
setParseIntegerOnly |
Устанавливает, анализирует ли этот формат только целое число из числовой части компактного числа. |
void |
setRoundingMode |
Устанавливает RoundingMode, используемый в этом экземпляре CompactNumberFormat. |
Методы, объявленные в классе java.text.NumberFormat
format, format, getAvailableLocales, getCompactNumberInstance, getCompactNumberInstance, getCurrency, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getMaximumFractionDigits, getMaximumIntegerDigits, getMinimumFractionDigits, getMinimumIntegerDigits, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, parse, parseObject, setCurrency
Методы, объявленные в классе java.text.Format
format, parseObject
Подробное описание конструкторов
CompactNumberFormat
public CompactNumberFormat(String decimalPattern, DecimalFormatSymbols symbols, String[] compactPatterns)
CompactNumberFormat с использованием заданного десятичного шаблона, символов формата десятичных чисел и компактных шаблонов. Для получения экземпляра CompactNumberFormat со стандартными компактными шаблонами для Locale и Style, рекомендуется использовать методы-фабрики, предоставляемые NumberFormat для компактного форматирования чисел. Например, NumberFormat.getCompactNumberInstance(Locale, Style).- Параметры:
-
decimalPattern- десятичный шаблон для общего форматирования чисел -
symbols- набор символов для использования -
compactPatterns- массив компактных шаблонов чисел - Исключения:
-
NullPointerException- если любой из заданных аргументов являетсяnull -
IllegalArgumentException- если заданныйdecimalPatternили массивcompactPatternsсодержит неверный шаблон или в массиве компактных шаблонов появляетсяnull - См. также:
CompactNumberFormat
public CompactNumberFormat(String decimalPattern, DecimalFormatSymbols symbols, String[] compactPatterns, String pluralRules)
CompactNumberFormat с использованием заданного десятичного шаблона, символов формата десятичных чисел, компактных шаблонов и правил множественного числа. Для получения экземпляра CompactNumberFormat со стандартными компактными шаблонами для Locale, Style, и pluralRules, рекомендуется использовать методы-фабрики, предоставляемые NumberFormat для компактного форматирования чисел. Например, NumberFormat.getCompactNumberInstance(Locale, Style).- Параметры:
-
decimalPattern- десятичный шаблон для общего форматирования чисел -
symbols- набор символов для использования -
compactPatterns- массив компактных шаблонов чисел -
pluralRules- строка, определяющая правила множественного числа, которые сопоставляют ключевое словоCount, например, "one", и фактическое целое число. Его синтаксис определён в синтаксисе правил множественного числа от Unicode Consortium - Исключения:
-
NullPointerException- если любой из заданных аргументов являетсяnull -
IllegalArgumentException- если заданныйdecimalPattern, массивcompactPatternsсодержит неверный шаблон, в массиве компактных шаблонов появляетсяnull, или заданнаяpluralRulesсодержит неверный синтаксис - С момента:
- 14
- Внешние спецификации
- См. также:
Подробное описание методов
format
public final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition fieldPosition)
Number.- Переопределяет:
-
formatв классеNumberFormat - Параметры:
-
number- число для форматирования -
toAppendTo-StringBufferдля добавления отформатированного текста -
fieldPosition- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа123456789вUS locale, если заданноеfieldPositionравноNumberFormat.INTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 3 для выходной строки123M. Аналогично, позиции префикса и суффикса полей можно получить, используяNumberFormat.Field.PREFIXиNumberFormat.Field.SUFFIXсоответственно. - Возвращает:
- переданное в качестве
toAppendToStringBuffer - Исключения:
-
IllegalArgumentException- еслиnumberявляетсяnullили не является экземпляромNumber -
NullPointerException- еслиtoAppendToилиfieldPositionявляетсяnull -
ArithmeticException- если округление необходимо с режимом округления, установленным наRoundingMode.UNNECESSARY - См. также:
format
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
- Определено в:
-
formatв классеNumberFormat - Параметры:
-
number- double-число для форматирования -
result- место для добавления текста -
fieldPosition- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа1234567.89вUS localeесли заданноеfieldPositionравноNumberFormat.INTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 1 для выходной строки1M. Аналогично, позиции префикса и суффикса полей можно получить, используяNumberFormat.Field.PREFIXиNumberFormat.Field.SUFFIXсоответственно. - Возвращает:
- переданное в качестве
resultStringBuffer - Исключения:
-
NullPointerException- еслиresultилиfieldPositionравноnull -
ArithmeticException- если округление необходимо с режимом округления, установленным наRoundingMode.UNNECESSARY - См. также:
format
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
- Определено в:
-
formatв классеNumberFormat - Параметры:
-
number- long-число для форматирования -
result- место для добавления текста -
fieldPosition- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа123456789вUS localeесли заданноеfieldPositionравноNumberFormat.INTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 3 для выходной строки123M. Аналогично, позиции префикса и суффикса полей можно получить, используяNumberFormat.Field.PREFIXиNumberFormat.Field.SUFFIXсоответственно. - Возвращает:
- переданное в качестве
resultStringBuffer - Исключения:
-
NullPointerException- еслиresultилиfieldPositionравноnull -
ArithmeticException- если округление необходимо с режимом округления, установленным наRoundingMode.UNNECESSARY - См. также:
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object obj)
AttributedCharacterIterator. Возвращённый AttributedCharacterIterator может быть использован для построения результирующей строки, а также для определения информации о результирующей строке. Каждый ключ атрибута AttributedCharacterIterator будет типа NumberFormat.Field, значение атрибута будет таким же, как и ключ атрибута. Префиксная и суффиксная части возвращаемого итератора (если присутствуют) представлены атрибутами NumberFormat.Field.PREFIX и NumberFormat.Field.SUFFIX соответственно.
- Переопределяет:
-
formatToCharacterIteratorв классеFormat - Параметры:
-
obj- объект для форматирования - Возвращает:
AttributedCharacterIteratorописывающий отформатированное значение- Исключения:
-
NullPointerException- если obj равен null -
IllegalArgumentException- когда Формат не может отформатировать данный объект -
ArithmeticException- если округление необходимо с режимом округления, установленным наRoundingMode.UNNECESSARY
parse
public Number parse(String text, ParsePosition pos)
Number. Метод пытается разобрать текст, начиная с индекса, заданного pos. Если разбор выполнен успешно, то индекс pos обновляется до индекса после последнего используемого символа (разбор не обязательно использует все символы до конца строки), и возвращается разобранное число. Обновленный pos может использоваться для указания начальной точки для следующего вызова этого метода. Если возникает ошибка, то индекс pos не изменяется, индекс ошибки pos устанавливается на индекс символа, где произошла ошибка, и возвращается null.
Значение представляет собой числовую часть в заданном тексте, умноженную на числовой эквивалент присоединенного суффикса (например, "K" = 1000 в US locale). Возвращаемый подкласс зависит от значения isParseBigDecimal().
- Если
isParseBigDecimal()равно false (по умолчанию), большинство целочисленных значений возвращаются как объектыLong, независимо от того, как они записаны:"17K"и"17.000K"оба разбираются вLong.valueOf(17000). Если значение не может поместиться вLong, то результат возвращается какDouble. Это включает значения с дробной частью, бесконечные значения,NaN, и значение -0.0.Вызывающие стороны могут использовать методы
NumberdoubleValue,longValue, и т.д., чтобы получить желаемый тип. - Если
isParseBigDecimal()равно true, значения возвращаются как объектыBigDecimal. Специальные случаи отрицательной и положительной бесконечности и NaN возвращаются как экземплярыDouble, содержащие значения соответствующих константDouble.
CompactNumberFormat разбирает все символы Unicode, представляющие десятичные цифры, как определено Character.digit(). Кроме того, CompactNumberFormat также распознает как цифры десять последовательных символов, начиная с локализованной цифры нуля, определенной в объекте DecimalFormatSymbols.
CompactNumberFormat разбор не допускает разбора научных обозначений. Например, разбор строки "1.05E4K" в US locale прерывается на символе 'E' и возвращает 1.05.
- Указано в:
-
parseв классеNumberFormat - Параметры:
-
text- строка для разбора -
pos- объектParsePositionс информацией об индексе и индексе ошибки, как описано выше - Возвращает:
- разобранное значение или
null, если разбор завершился неудачей - Исключения:
-
NullPointerException- еслиtextилиposравно null - См. также:
setMaximumIntegerDigits
public void setMaximumIntegerDigits(int newValue)
newValue > 309, то максимальное количество целых цифр устанавливается равным 309. Отрицательные значения входных данных заменяются на 0.- Переопределяет:
-
setMaximumIntegerDigitsв классеNumberFormat - Параметры:
-
newValue- максимальное количество целых цифр, которые должны быть показаны - См. также:
setMinimumIntegerDigits
public void setMinimumIntegerDigits(int newValue)
newValue > 309, то минимальное количество целых цифр устанавливается равным 309. Отрицательные значения входных данных заменяются на 0.- Переопределяет:
-
setMinimumIntegerDigitsв классеNumberFormat - Параметры:
-
newValue- минимальное количество целых цифр, которые должны быть показаны - См. также:
setMinimumFractionDigits
public void setMinimumFractionDigits(int newValue)
newValue > 340, то минимальное количество дробных цифр устанавливается равным 340. Отрицательные значения входных данных заменяются на 0.- Переопределяет:
-
setMinimumFractionDigitsв классеNumberFormat - Параметры:
-
newValue- минимальное количество дробных цифр, которые должны быть показаны - См. также:
setMaximumFractionDigits
public void setMaximumFractionDigits(int newValue)
newValue > 340, то максимальное количество дробных цифр устанавливается равным 340. Отрицательные значения входных данных заменяются на 0.- Переопределяет:
-
setMaximumFractionDigitsв классеNumberFormat - Параметры:
-
newValue- максимальное количество дробных цифр, которые должны быть показаны - См. также:
getRoundingMode
public RoundingMode getRoundingMode()
RoundingMode, используемый в этом CompactNumberFormat.- Переопределяет:
-
getRoundingModeв классеNumberFormat - Возвращает:
RoundingMode, используемый для этогоCompactNumberFormat- См. также:
setRoundingMode
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode, используемый в этом CompactNumberFormat.- Переопределяет:
-
setRoundingModeв классеNumberFormat - Параметры:
-
roundingMode-RoundingMode, который будет использоваться - Исключения:
-
NullPointerException- еслиroundingModeявляетсяnull - См. также:
getGroupingSize
public int getGroupingSize()
"12,347 trillion" для US locale, размер группировки равен 3.- Возвращает:
- размер группировки
- См. также:
setGroupingSize
public void setGroupingSize(int newValue)
"12,347 trillion" для US locale, размер группировки равен 3. Размер группировки должен быть больше или равен нулю и меньше или равен 127.- Параметры:
-
newValue- новый размер группировки - Исключения:
-
IllegalArgumentException- еслиnewValueотрицателен или больше 127 - См. также:
isGroupingUsed
public boolean isGroupingUsed()
12346567890987654 может быть отформатировано как "12,347 trillion" в US locale. Разделитель групп зависит от локали.- Переопределяет:
-
isGroupingUsedв классеNumberFormat - Возвращает:
-
true, если используется группировка;falseв противном случае - См. также:
setGroupingUsed
public void setGroupingUsed(boolean newValue)
- Переопределяет:
-
setGroupingUsedв классеNumberFormat - Параметры:
-
newValue-true, если используется группировка;falseв противном случае - См. также:
isParseIntegerOnly
public boolean isParseIntegerOnly()
US locale, если этот метод возвращает true, строка "1234.78 thousand" будет обработана как значение 1234000 (1234 (целая часть) * 1000 (тысяча)), а дробная часть будет пропущена. Точный формат, принимаемый операцией анализа, зависит от локали.- Overrides:
-
isParseIntegerOnlyв классеNumberFormat - Возвращает:
-
trueесли компактные числа должны анализироваться только как целые числа;falseв противном случае
setParseIntegerOnly
public void setParseIntegerOnly(boolean value)
- Overrides:
-
setParseIntegerOnlyв классеNumberFormat - Параметры:
-
value-trueесли компактные числа должны анализироваться только как целые числа;falseв противном случае - См. также:
isParseBigDecimal
public boolean isParseBigDecimal()
parse(String, ParsePosition) значение BigDecimal. Значение по умолчанию — false.- Возвращает:
-
trueесли метод анализа возвращает BigDecimal;falseв противном случае - См. также:
setParseBigDecimal
public void setParseBigDecimal(boolean newValue)
parse(String, ParsePosition) значение BigDecimal.- Параметры:
-
newValue-trueесли метод анализа возвращает BigDecimal;falseв противном случае - См. также:
equals
public boolean equals(Object obj)
CompactNumberFormat заданному obj. Объекты типа CompactNumberFormat сравниваются, другие типы возвращают false; подчиняется общему контракту Object.equals.- Overrides:
-
equalsв классеNumberFormat - Параметры:
-
obj- объект для сравнения - Возвращает:
- true, если этот объект равен другому
CompactNumberFormat - См. также:
hashCode
public int hashCode()
CompactNumberFormat экземпляра.- Overrides:
-
hashCodeв классеNumberFormat - Возвращает:
- хеш-код для этого
CompactNumberFormat - См. также:
clone
public CompactNumberFormat clone()
CompactNumberFormat экземпляра.- Overrides:
-
cloneв классеNumberFormat - Возвращает:
- клонированный экземпляр
- См. также:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/text/CompactNumberFormat.html