Класс NumberFormat
- Все реализованные интерфейсы:
-
Serializable,Cloneable
- Прямые известные подклассы:
-
ChoiceFormat,CompactNumberFormat,DecimalFormat
public abstract class NumberFormat extends Format
NumberFormat является абстрактным базовым классом для всех форматов чисел. Этот класс предоставляет интерфейс для форматирования и разбора чисел. NumberFormat также предоставляет методы для определения, в каких локалях существуют форматы чисел, и каковы их имена. NumberFormat помогает форматировать и анализировать числа для любой локали. Ваш код может быть полностью независимым от соглашений локали относительно десятичных точек, разделителей тысяч или даже конкретных десятичных цифр, или от того, является ли формат чисел десятичным.
Для форматирования числа для текущей локали используйте один из методов фабричного класса:
Если вы форматируете несколько чисел, эффективнее получить формат и использовать его несколько раз, чтобы система не получала информацию о соглашениях локали языка и страны несколько раз.myString = NumberFormat.getInstance().format(myNumber);
Для форматирования числа для другой локали укажите её в вызовеNumberFormat nf = NumberFormat.getInstance(); for (int i = 0; i < myNumber.length; ++i) { output.println(nf.format(myNumber[i]) + "; "); }
getInstance. NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
Если локаль содержит «nu» (числа) и/или «rg» (переопределение региона) расширения Юникода, десятичные цифры и/или страна, используемая для форматирования, переопределяются. Если указаны как «nu», так и «rg», десятичные цифры из расширения «nu» переопределяют неявные из расширения «rg».
Вы также можете использовать NumberFormat для разбора чисел:
ИспользуйтеmyNumber = nf.parse(myString);
getInstance или getNumberInstance для получения обычного формата чисел. Используйте getIntegerInstance для получения формата целых чисел. Используйте getCurrencyInstance для получения формата валюты. Используйте getCompactNumberInstance для получения компактного формата чисел для форматирования числа в более короткой форме. Например, 2000 может быть отформатирован как "2K" в US locale. Используйте getPercentInstance для получения формата для отображения процентов. С этим форматом дробь, например, 0,53, отображается как 53%. Вы также можете контролировать отображение чисел с помощью таких методов, как setMinimumFractionDigits. Если вы хотите получить ещё больший контроль над форматом или разбором, или хотите предоставить пользователям больший контроль, вы можете попробовать привести NumberFormat, полученные из методов фабрики, к DecimalFormat или CompactNumberFormat в зависимости от используемого метода фабрики. Это будет работать для подавляющего большинства локалей; просто помните, что следует поместить это в try блок на случай, если вы столкнётесь с необычной.
NumberFormat и DecimalFormat разработаны таким образом, что некоторые элементы управления работают для форматирования, а другие – для разбора. Ниже приведено подробное описание каждого из этих методов управления,
setParseIntegerOnly : влияет только на разбор, например, если true, "3456.78" → 3456 (и оставляет позицию разбора сразу после индекса 6), если false, "3456.78" → 3456.78 (и оставляет позицию разбора сразу после индекса 8). Это независимо от форматирования. Если вы хотите не отображать десятичную точку, где может не быть цифр после десятичной точки, используйте setDecimalSeparatorAlwaysShown.
setDecimalSeparatorAlwaysShown : влияет только на форматирование и только там, где может не быть цифр после десятичной точки, например, с шаблоном «#,##0.##», например, если true, 3456.00 → «3 456.» если false, 3456.00 → «3456» Это независимо от разбора. Если вы хотите, чтобы разбор прекращался на десятичной точке, используйте setParseIntegerOnly.
Вы также можете использовать формы методов parse и format с ParsePosition и FieldPosition, чтобы позволить вам:
- поэтапно анализировать части строки
- выравнивать десятичную точку и другие области
- Если вы используете моноширинный шрифт с интервалами для выравнивания, вы можете передать
FieldPositionв вызов формата, сfield=INTEGER_FIELD. При выводеgetEndIndexбудет установлен в смещение между последним символом целой части и десятичной. Добавьте (желаемое количество пробелов - getEndIndex) пробелов в начало строки. - Если вы используете пропорциональный шрифт, вместо заполнения пробелами измерьте ширину строки в пикселях от начала до
getEndIndex. Затем переместите перо на (желаемая ширина в пикселях - ширина до точки выравнивания) перед отображением текста. Это также работает, где нет десятичной точки, но, возможно, есть дополнительные символы в конце, например, с скобками в отрицательных числах: "(12)" для -12.
Синхронизация
Форматы чисел обычно не синхронизированы. Рекомендуется создавать отдельные экземпляры формата для каждого потока. Если к формату одновременно обращаются несколько потоков, он должен быть синхронизирован внешним образом.
- Требования к реализации:
- Методы
format(double, StringBuffer, FieldPosition),format(long, StringBuffer, FieldPosition)иparse(String, ParsePosition)могут вызыватьNullPointerException, если любой из их параметров являетсяnull. Подкласс может предоставить собственную реализацию и спецификацию относительноNullPointerException.Базовая реализация предоставляет режимы округления, определённые в
RoundingModeдля форматирования чисел. Она использует алгоритм округления round half-even. Для изменения режима округления используйтеsetRoundingMode.NumberFormatвозвращаемое статическими методами-фабриками, настроен для округления чисел с плавающей точкой с помощью алгоритма округления по ближайшему четному (см.RoundingMode.HALF_EVEN) для форматирования. - С:
- 1.1
- См. также:
Краткое описание вложенных классов
| Modifier and Type | Class | Description |
|---|---|---|
static class |
NumberFormat.Field |
Определяет константы, используемые в качестве ключей атрибутов в AttributedCharacterIterator возвращаемом NumberFormat.formatToCharacterIterator и в качестве идентификаторов полей в FieldPosition. |
static enum |
NumberFormat.Style |
Стиль формата числа. |
Краткое описание полей
| Modifier and Type | Field | Description |
|---|---|---|
static final int |
FRACTION_FIELD |
Постоянная для поля, используемая для построения объекта FieldPosition. |
static final int |
INTEGER_FIELD |
Постоянная для поля, используемая для построения объекта FieldPosition. |
Краткое описание конструкторов
| Modifier | Constructor | Description |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
Object |
clone() |
Переопределяет Cloneable. |
boolean |
equals |
Переопределяет equals. |
final String |
format |
Специализация формата. |
abstract StringBuffer |
format |
Специализация формата. |
final String |
format |
Специализация формата. |
abstract StringBuffer |
format |
Специализация формата. |
StringBuffer |
format |
Форматирует число и добавляет полученный текст в заданный буфер строк. |
static Locale[] |
getAvailableLocales() |
Возвращает массив всех локалей, для которых методы этого класса могут возвращать локализованные экземпляры. |
static NumberFormat |
getCompactNumberInstance() |
|
static NumberFormat |
getCompactNumberInstance |
Возвращает компактный формат числа для указанной локали locale и стиля formatStyle. |
Currency |
getCurrency() |
Возвращает валюту, используемую этим форматом числа при форматировании значений валюты. |
static final NumberFormat |
getCurrencyInstance() |
Возвращает формат валюты для текущей локали по умолчанию FORMAT. |
static NumberFormat |
getCurrencyInstance |
Возвращает формат валюты для указанной локали. |
static final NumberFormat |
getInstance() |
Возвращает универсальный формат числа для текущей локали по умолчанию FORMAT. |
static NumberFormat |
getInstance |
Возвращает универсальный формат числа для указанной локали. |
static final NumberFormat |
getIntegerInstance() |
Возвращает формат целых чисел для текущей локали по умолчанию FORMAT. |
static NumberFormat |
getIntegerInstance |
Возвращает формат целых чисел для указанной локали. |
int |
getMaximumFractionDigits() |
Возвращает максимальное количество цифр, разрешенных в дробной части числа. |
int |
getMaximumIntegerDigits() |
Возвращает максимальное количество цифр, разрешенных в целой части числа. |
int |
getMinimumFractionDigits() |
Возвращает минимальное количество цифр, разрешенных в дробной части числа. |
int |
getMinimumIntegerDigits() |
Возвращает минимальное количество цифр, разрешенных в целой части числа. |
static final NumberFormat |
getNumberInstance() |
Возвращает универсальный формат числа для текущей локали по умолчанию FORMAT. |
static NumberFormat |
getNumberInstance |
Возвращает универсальный формат числа для указанной локали. |
static final NumberFormat |
getPercentInstance() |
Возвращает формат процентов для текущей локали по умолчанию FORMAT. |
static NumberFormat |
getPercentInstance |
Возвращает формат процентов для указанной локали. |
RoundingMode |
getRoundingMode() |
Возвращает RoundingMode, используемый в этом формате числа. |
int |
hashCode() |
Переопределяет hashCode. |
boolean |
isGroupingUsed() |
Возвращает true, если группировка используется в этом формате. |
boolean |
isParseIntegerOnly() |
Возвращает true, если этот формат будет анализировать числа только как целые. |
Number |
parse |
Анализирует текст с начала заданной строки для получения числа. |
abstract Number |
parse |
Возвращает Long, если это возможно (например, в диапазоне [Long.MIN_VALUE, Long.MAX_VALUE] и без десятичных знаков), в противном случае Double. |
final Object |
parseObject |
Анализирует текст из строки для получения Number. |
void |
setCurrency |
Устанавливает валюту, используемую этим форматом числа при форматировании значений валюты. |
void |
setGroupingUsed |
Устанавливает, будет ли использоваться группировка в этом формате. |
void |
setMaximumFractionDigits |
Устанавливает максимальное количество цифр, разрешенных в дробной части числа. maximumFractionDigits должно быть ≥ minimumFractionDigits. |
void |
setMaximumIntegerDigits |
Устанавливает максимальное количество цифр, разрешенных в целой части числа. maximumIntegerDigits должно быть ≥ minimumIntegerDigits. |
void |
setMinimumFractionDigits |
Устанавливает минимальное количество цифр, разрешенных в дробной части числа. minimumFractionDigits должно быть ≤ maximumFractionDigits. |
void |
setMinimumIntegerDigits |
Устанавливает минимальное количество цифр, разрешенных в целой части числа. minimumIntegerDigits должно быть ≤ maximumIntegerDigits. |
void |
setParseIntegerOnly |
Устанавливает, должны ли числа анализироваться только как целые. |
void |
setRoundingMode |
Устанавливает RoundingMode, используемый в этом формате числа. |
Методы, объявленные в классе java.text.Format
format, formatToCharacterIterator, parseObject
Подробное описание полей
INTEGER_FIELD
public static final int INTEGER_FIELD
- См. также:
FRACTION_FIELD
public static final int FRACTION_FIELD
- См. также:
Подробное описание конструкторов
NumberFormat
protected NumberFormat()
Подробное описание методов
format
public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number. Эта реализация извлекает значение числа, используя Number.longValue() для всех целочисленных типов значений, которые могут быть преобразованы в long без потери информации, включая BigInteger значения с bit length меньше 64, и Number.doubleValue() для всех других типов. Затем она вызывает format(long,java.lang.StringBuffer,java.text.FieldPosition) или format(double,java.lang.StringBuffer,java.text.FieldPosition). Это может привести к потере информации о величине и точности для BigInteger и BigDecimal значений.
- Указано в:
-
formatв классеFormat - Параметры:
-
number- число для форматирования -
toAppendTo- буфер строк, в который должен быть добавлен форматированный текст -
pos- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа1234567.89вLocale.USлокали, если заданныйfieldPositionравенINTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 9 для строки вывода1,234,567.89. - Возвращает:
- переданное значение в качестве
toAppendTo - Исключение:
-
IllegalArgumentException- еслиnumberравно null или не является экземпляромNumber. -
NullPointerException- еслиtoAppendToилиposравно null -
ArithmeticException- если требуется округление при заданном режиме округления RoundingMode.UNNECESSARY - См. также:
parseObject
public final Object parseObject(String source, ParsePosition pos)
Number. Метод пытается разобрать текст, начиная с индекса, заданного pos. Если разбор успешен, то индекс pos обновляется до индекса после последнего используемого символа (разбор не обязательно использует все символы до конца строки), и возвращается разобранное число. Обновленный pos может быть использован для указания начальной точки для следующего вызова этого метода. Если произошла ошибка, то индекс pos не изменяется, индекс ошибки pos устанавливается в индекс символа, где произошла ошибка, и возвращается null.
См. метод parse(String, ParsePosition) для получения дополнительной информации о разборе чисел.
- Указано в:
-
parseObjectв классеFormat - Параметры:
-
source- Строка, часть которой должна быть разобрана. -
pos- Объект ParsePosition с информацией об индексе и индексе ошибки, как описано выше. - Возвращает:
- Число, разобранное из строки. В случае ошибки возвращает null.
- Исключение:
-
NullPointerException- еслиsourceилиposравно null.
format
public final String format(double number)
- Параметры:
-
number- двойное число для форматирования - Возвращает:
- форматированная строка
- Исключение:
-
ArithmeticException- если требуется округление при заданном режиме округления RoundingMode.UNNECESSARY - См. также:
format
public final String format(long number)
- Параметры:
-
number- длинное число для форматирования - Возвращает:
- форматированная строка
- Исключение:
-
ArithmeticException- если требуется округление при заданном режиме округления RoundingMode.UNNECESSARY - См. также:
format
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
- Параметры:
-
number- двойное число для форматирования -
toAppendTo- буфер строк, в который должен быть добавлен форматированный текст -
pos- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа1234567.89вLocale.USлокали, если заданныйfieldPositionравенINTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 9 для строки вывода1,234,567.89. - Возвращает:
- форматированный буфер строк
- Исключение:
-
ArithmeticException- если требуется округление при заданном режиме округления RoundingMode.UNNECESSARY - См. также:
format
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
- Параметры:
-
number- длинное число для форматирования -
toAppendTo- буфер строк, в который должен быть добавлен форматированный текст -
pos- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа123456789вLocale.USлокали, если заданныйfieldPositionравенINTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 11 для строки вывода123,456,789. - Возвращает:
- форматированный буфер строк
- Исключение:
-
ArithmeticException- если требуется округление при заданном режиме округления RoundingMode.UNNECESSARY - См. также:
parse
public abstract Number parse(String source, ParsePosition parsePosition)
- Параметры:
-
source- строка для разбора -
parsePosition- позиция разбора - Возвращает:
- разобранное значение
- См. также:
parse
public Number parse(String source) throws ParseException
См. метод parse(String, ParsePosition) для получения дополнительной информации о разборе чисел.
- Параметры:
-
source- Строка, начало которой должно быть разобрано. - Возвращает:
- Число, разобранное из строки.
- Исключение:
-
ParseException- если начало заданной строки не может быть разобрано.
isParseIntegerOnly
public boolean isParseIntegerOnly()
- Возвращает:
-
trueесли числа должны быть разобраны только как целые числа;falseв противном случае
setParseIntegerOnly
public void setParseIntegerOnly(boolean value)
- Параметры:
-
value-trueесли числа должны быть разобраны только как целые числа;falseв противном случае - См. также:
getInstance
public static final NumberFormat getInstance()
FORMAT языка. Это то же самое, что вызов getNumberInstance().- Возвращает:
- экземпляр
NumberFormatдля форматирования чисел общего назначения
getInstance
public static NumberFormat getInstance(Locale inLocale)
getNumberInstance(inLocale).- Параметры:
-
inLocale- желаемый язык - Возвращает:
- экземпляр
NumberFormatдля форматирования чисел общего назначения
getNumberInstance
public static final NumberFormat getNumberInstance()
FORMAT языка. Это эквивалентно вызову getNumberInstance(Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- экземпляр
NumberFormatдля форматирования чисел общего назначения - См. также:
getNumberInstance
public static NumberFormat getNumberInstance(Locale inLocale)
- Параметры:
-
inLocale- желаемый язык - Возвращает:
- экземпляр
NumberFormatдля форматирования чисел общего назначения
getIntegerInstance
public static final NumberFormat getIntegerInstance()
FORMAT языка. Возвращаемый числовой формат настроен на округление чисел с плавающей запятой до ближайшего целого с округлением по правилу «ближайшего чётного» (см. RoundingMode.HALF_EVEN) при форматировании и на чтение только целой части входной строки (см. isParseIntegerOnly). Это эквивалентно вызову getIntegerInstance(Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- формат чисел для целых значений
- С:
- 1.4
- См. также:
getIntegerInstance
public static NumberFormat getIntegerInstance(Locale inLocale)
RoundingMode.HALF_EVEN) при форматировании и на чтение только целой части входной строки (см. isParseIntegerOnly).- Параметры:
-
inLocale- желаемый язык - Возвращает:
- формат чисел для целых значений
- С:
- 1.4
- См. также:
getCurrencyInstance
public static final NumberFormat getCurrencyInstance()
FORMAT языка. Это эквивалентно вызову getCurrencyInstance(Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- экземпляр
NumberFormatдля форматирования валюты - См. также:
getCurrencyInstance
public static NumberFormat getCurrencyInstance(Locale inLocale)
Если указанный язык содержит «cf» ( формат валюты) расширение языка, возвращаемый формат валюты использует стиль, если он доступен. В противном случае, стиль использует стандартный формат валюты «standard». Например, если стиль определяет «account», отрицательные значения валюты в некоторых языках используют пару скобок.
- Параметры:
-
inLocale- желаемый язык - Возвращает:
- экземпляр
NumberFormatдля форматирования валюты - Внешние спецификации
getPercentInstance
public static final NumberFormat getPercentInstance()
FORMAT языка. Это эквивалентно вызову getPercentInstance(Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- экземпляр
NumberFormatдля форматирования процентов - См. также:
getPercentInstance
public static NumberFormat getPercentInstance(Locale inLocale)
- Параметры:
-
inLocale- желаемый язык - Возвращает:
- экземпляр
NumberFormatдля форматирования процентов
getCompactNumberInstance
public static NumberFormat getCompactNumberInstance()
- Возвращает:
- Экземпляр
NumberFormatдля форматирования компактных чисел - С:
- 12
- См. также:
getCompactNumberInstance
public static NumberFormat getCompactNumberInstance(Locale locale, NumberFormat.Style formatStyle)
locale и formatStyle.- Параметры:
-
locale- желаемый язык -
formatStyle- стиль для форматирования числа - Возвращает:
- Экземпляр
NumberFormatдля форматирования компактных чисел - Исключения:
-
NullPointerException- еслиlocaleилиformatStyleявляетсяnull - С:
- 12
- См. также:
getAvailableLocales
public static Locale[] getAvailableLocales()
get*Instance этого класса могут возвращать локализованные экземпляры. Возвращаемый массив представляет собой объединение языков, поддерживаемых Java-средой выполнения и установленными NumberFormatProvider реализациями. Как минимум, возвращаемый массив должен содержать экземпляр Locale, равный Locale.ROOT, и экземпляр Locale равный Locale.US.- Возвращает:
- Массив языков, для которых доступны локализованные экземпляры
NumberFormat.
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого объекта.
- См. также:
equals
public boolean equals(Object obj)
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект-ссылка, с которым сравнивать. - Возвращает:
-
trueесли этот объект такой же, как аргумент obj;falseв противном случае. - См. также:
clone
public Object clone()
- Переопределяет:
-
cloneв классеFormat - Возвращает:
- клонированный экземпляр.
- См. также:
isGroupingUsed
public boolean isGroupingUsed()
- Returns:
-
trueесли группировка используется;falseв противном случае - See Also:
setGroupingUsed
public void setGroupingUsed(boolean newValue)
- Parameters:
-
newValue-trueесли группировка используется;falseв противном случае - See Also:
getMaximumIntegerDigits
public int getMaximumIntegerDigits()
- Returns:
- максимальное количество цифр
- See Also:
setMaximumIntegerDigits
public void setMaximumIntegerDigits(int newValue)
- Parameters:
-
newValue- максимальное количество цифр целой части; если меньше нуля, используется ноль. Конкретный подкласс может установить верхнюю границу этого значения, соответствующую типу числового значения, которое форматируется. - See Also:
getMinimumIntegerDigits
public int getMinimumIntegerDigits()
- Returns:
- минимальное количество цифр
- See Also:
setMinimumIntegerDigits
public void setMinimumIntegerDigits(int newValue)
- Parameters:
-
newValue- минимальное количество цифр целой части; если меньше нуля, используется ноль. Конкретный подкласс может установить верхнюю границу этого значения, соответствующую типу числового значения, которое форматируется. - See Also:
getMaximumFractionDigits
public int getMaximumFractionDigits()
- Returns:
- максимальное количество цифр.
- See Also:
setMaximumFractionDigits
public void setMaximumFractionDigits(int newValue)
- Parameters:
-
newValue- максимальное количество цифр дробной части; если меньше нуля, используется ноль. Конкретный подкласс может установить верхнюю границу этого значения, соответствующую типу числового значения, которое форматируется. - See Also:
getMinimumFractionDigits
public int getMinimumFractionDigits()
- Returns:
- минимальное количество цифр
- See Also:
setMinimumFractionDigits
public void setMinimumFractionDigits(int newValue)
- Parameters:
-
newValue- минимальное количество цифр дробной части; если меньше нуля, используется ноль. Конкретный подкласс может установить верхнюю границу этого значения, соответствующую типу числового значения, которое форматируется. - See Also:
getCurrency
public Currency getCurrency()
setCurrency. Реализация по умолчанию вызывает UnsupportedOperationException.
- Returns:
- валюта, используемая этим форматом числа, или
null - Throws:
-
UnsupportedOperationException- если класс формата числа не реализует форматирование валюты - Since:
- 1.4
setCurrency
public void setCurrency(Currency currency)
Реализация по умолчанию вызывает UnsupportedOperationException.
- Parameters:
-
currency- новая валюта, которая будет использоваться этим форматом числа - Throws:
-
UnsupportedOperationException- если класс формата числа не реализует форматирование валюты -
NullPointerException- еслиcurrencyравно null - Since:
- 1.4
getRoundingMode
public RoundingMode getRoundingMode()
RoundingMode. Реализация по умолчанию этого метода в NumberFormat всегда вызывает UnsupportedOperationException. Подклассы, обрабатывающие различные режимы округления, должны переопределять этот метод.- Returns:
- Используемый для этого NumberFormat
RoundingMode. - Throws:
-
UnsupportedOperationException- Реализация по умолчанию всегда вызывает эту исключение - Since:
- 1.6
- See Also:
setRoundingMode
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode. Реализация по умолчанию этого метода в NumberFormat всегда вызывает UnsupportedOperationException. Подклассы, обрабатывающие различные режимы округления, должны переопределять этот метод.- Parameters:
-
roundingMode- ИспользуемыйRoundingMode - Throws:
-
UnsupportedOperationException- Реализация по умолчанию всегда вызывает эту исключение -
NullPointerException- еслиroundingModeравно null - Since:
- 1.6
- See Also:
© 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/NumberFormat.html