Класс DecimalFormat
- Все реализованные интерфейсы:
Serializable, Cloneable
public class DecimalFormat extends NumberFormat
DecimalFormat — конкретный подкласс NumberFormat, который форматирует десятичные числа с учетом локали. Он обладает множеством возможностей, позволяющих выполнять разбор и форматирование чисел в любой локали, включая поддержку западных, арабских и индийских цифр. Он также поддерживает различные виды чисел, включая целые числа (123), числа с фиксированной точкой (123.4), экспоненциальную запись (1.23E4), проценты (12%) и денежные суммы ($123). Получение DecimalFormat
Чтобы получить стандартный десятичный формат для конкретной локали, включая локаль по умолчанию, рекомендуется вызвать один изNumberFormat factory methods, например NumberFormat.getInstance(). Эти фабричные методы не всегда возвращают DecimalFormat — это зависит от установленной реализации поставщика служб локали. Поэтому для использования метода экземпляра, определенного в DecimalFormat, перед преобразованием возвращенного фабричным методом NumberFormat в DecimalFormat следует проверить его тип. Если установленная реализация службы с учетом локали не поддерживает указанную Locale, будет выполнен поиск по цепочке родительских локалей и использована поддерживаемая Locale. Если фабричные методы не подходят, используйте один из конструкторов, например DecimalFormat(String pattern). Дополнительные сведения о параметре pattern см. в разделе Pattern.
Использование DecimalFormat
Ниже приведен пример форматирования и разбора:NumberFormat nFmt = NumberFormat.getCurrencyInstance(Locale.US);
if (nFmt instanceof DecimalFormat dFmt) {
// pattern match to DecimalFormat to use setPositiveSuffix(String)
dFmt.setPositiveSuffix(" dollars");
dFmt.format(100000); // returns "$100,000.00 dollars"
dFmt.parse("$100,000.00 dollars"); // returns 100000
}
Форматирование и разбор
Округление
При форматированииDecimalFormat может изменять режим округления с помощью setRoundingMode(RoundingMode). По умолчанию используется RoundingMode.HALF_EVEN. Цифры
При форматированииDecimalFormat использует в качестве цифр десять последовательных символов, начиная с локализованной цифры ноль, определенной в объекте DecimalFormatSymbols. При разборе распознаются как эти цифры, так и все десятичные цифры Unicode, определенные в Character.digit.
Ограничения на количество целых и дробных цифр
Ограничения на количество целых и дробных цифр задаются с помощьюpattern или одного из соответствующих методов установки DecimalFormat, например setMinimumFractionDigits(int). Эти ограничения не влияют на разбор. Специальные значения
Не число (
NaN) форматируется как строка, обычно представленная как "NaN". Эта строка определяется методомDecimalFormatSymbols.getNaN(). Это единственное значение, к которому не добавляются префиксы и суффиксы.Бесконечность форматируется как строка, обычно представленная как "∞" (
U+221E), с добавлением положительных или отрицательных префиксов и суффиксов. Эта строка определяется методомDecimalFormatSymbols.getInfinity().-
Отрицательный ноль (
"-0") при разборе преобразуется в-
BigDecimal(0), еслиisParseBigDecimal()имеет значение true -
Long(0), еслиisParseBigDecimal()имеет значение false, аisParseIntegerOnly()— true -
Double(-0.0), если иisParseBigDecimal(), иisParseIntegerOnly()имеют значение false
-
Синхронизация
Объекты десятичного формата, как правило, не синхронизированы. Рекомендуется создавать отдельный экземпляр формата для каждого потока. Если несколько потоков одновременно обращаются к одному формату, необходимо обеспечить внешнюю синхронизацию.
Шаблон DecimalFormat
DecimalFormat состоит из шаблона и набора символов. Шаблон можно задать напрямую с помощью applyPattern() или косвенно с помощью различных методов API. Символы хранятся в объекте
DecimalFormatSymbols. При использовании фабричных методов NumberFormat шаблон и символы создаются установленной реализацией службы с учетом локали. Шаблоны DecimalFormat имеют следующий синтаксис:
Pattern:
PositivePattern
PositivePattern ; NegativePattern
PositivePattern:
Prefixopt Number Suffixopt
NegativePattern:
Prefixopt Number Suffixopt
Prefix:
Any characters except the special pattern characters
Suffix:
Any characters except the special pattern characters
Number:
Integer Exponentopt
Integer . Fraction Exponentopt
Integer:
MinimumInteger
#
# Integer
# , Integer
MinimumInteger:
0
0 MinimumInteger
0 , MinimumInteger
Fraction:
MinimumFractionopt OptionalFractionopt
MinimumFraction:
0 MinimumFractionopt
OptionalFraction:
# OptionalFractionopt
Exponent:
E MinimumExponent
MinimumExponent:
0 MinimumExponentopt
Специальные символы шаблона
Специальные символы в приведенной ниже таблице при использовании в шаблоне DecimalFormat интерпретируются синтаксически. Если они используются в качестве литералов в префиксе или суффиксе, их необходимо заключать в кавычки, если не указано иное.
Символы в столбце Symbol используются в нелокализованных шаблонах. Соответствующие символы в столбце Localized Symbol используются в локализованных шаблонах, при этом символы из Symbol утрачивают свое синтаксическое значение. Исключение составляют знак валюты (U+00A4) и кавычка (U+0027), которые не локализуются.
При вызове applyPattern(String) следует использовать нелокализованные шаблоны. При вызове applyLocalizedPattern(String) следует использовать локализованные шаблоны.
Символ Локализованный символ Расположение Значение 0DecimalFormatSymbols.getZeroDigit()Число Цифра #DecimalFormatSymbols.getDigit()Число Цифра; ноль не отображается .DecimalFormatSymbols.getDecimalSeparator()Число Десятичный или денежный разделитель целой и дробной частей - (U+002D)DecimalFormatSymbols.getMinusSign()Число Знак минус ,DecimalFormatSymbols.getGroupingSeparator()Число Разделитель групп разрядов или денежный разделитель групп разрядов EDecimalFormatSymbols.getExponentSeparator()Число Разделяет мантиссу и показатель степени в экспоненциальной записи. Регистр символа имеет значение. В префиксе или суффиксе заключать в кавычки не требуется. ;DecimalFormatSymbols.getPatternSeparator()Граница подшаблонов Разделяет положительный и отрицательный подшаблоны %DecimalFormatSymbols.getPercent()Префикс или суффикс Умножить на 100 и отобразить в виде процента ‰ ( U+2030)DecimalFormatSymbols.getPerMill()Префикс или суффикс Умножить на 1000 и отобразить в виде промилле ¤ ( U+00A4)н/д (не локализуется) Префикс или суффикс Знак валюты, заменяемый символом валюты. Если он указан дважды, заменяется международным символом валюты. Если он присутствует в шаблоне, вместо разделителей целой и дробной частей и групп разрядов используются денежные разделители. ' (U+0027)н/д (не локализуется) Префикс или суффикс Используется для заключения специальных символов в префиксе или суффиксе в кавычки; например, "'#'#"форматирует 123 как"#123". Чтобы указать саму кавычку, используйте две кавычки подряд:"# o''clock".
Определение максимального количества цифр
Для любого заданного шаблонаDecimalFormat, не использующего экспоненциальную запись, максимальное количество целых цифр не определяется по шаблону, а устанавливается равным Integer.MAX_VALUE. Если же шаблон использует экспоненциальную запись, максимальное количество целых цифр определяется по шаблону. Это подробно описано в разделе Scientific Notation. Для ручной настройки максимального количества целых цифр можно использовать setMaximumIntegerDigits(int). Отрицательные подшаблоны
ШаблонDecimalFormat содержит положительный и отрицательный подшаблоны, например "#,##0.00;(#,##0.00)". Каждый подшаблон состоит из префикса, числовой части и суффикса. Отрицательный подшаблон необязателен; если он отсутствует, в качестве отрицательного используется положительный подшаблон с добавленным в начало знаком минус '-' (U+002D HYPHEN-MINUS). То есть шаблон "0.00" эквивалентен шаблону "0.00;-0.00". Если отрицательный подшаблон задан явно, он определяет только отрицательные префикс и суффикс; количество цифр, минимальное количество цифр и другие характеристики совпадают с положительным шаблоном. Это означает, что "#,##0.0#;(#)" дает точно такое же поведение, как "#,##0.0#;(#,##0.0#)". В режиме lenient parsing включено нестрогое сопоставление шаблона знака минус в соответствии со спецификацией нестрогого сопоставления LDML. Префиксы, суффиксы и различные символы, используемые для бесконечности, цифр, разделителей групп разрядов, десятичных разделителей и т. д., можно задавать произвольными значениями, и при форматировании они будут отображаться должным образом. Однако необходимо следить за тем, чтобы символы и строки не конфликтовали, иначе разбор будет ненадежным. Например, чтобы DecimalFormat.parse() мог различать положительные и отрицательные значения, положительные и отрицательные префиксы или суффиксы должны отличаться. (Если они совпадают, DecimalFormat будет вести себя так, как если бы отрицательный подшаблон не был задан.) Другой пример: десятичный разделитель и разделитель групп разрядов должны быть разными символами, иначе разбор будет невозможен.
Разделитель групп разрядов
Разделитель групп разрядов обычно используется для разделения тысяч, но в некоторых локалях он отделяет десятки тысяч. Размер группы — это постоянное количество цифр между разделителями групп, например 3 для 100,000,000 или 4 для 1,0000,0000. Если в шаблоне указано несколько разделителей групп, используется интервал между последним разделителем и концом целой части. Например, "#,##,###,####" == "######,####" == "##,####,####".
Экспоненциальная запись
Числа в экспоненциальной записи представляются как произведение мантиссы и степени десяти; например, число 1234 можно представить как 1.234 x 10^3. Мантисса часто находится в диапазоне 1.0 ≤ x < 10.0, но это необязательно. DecimalFormat можно настроить для форматирования и разбора чисел в экспоненциальной записи только с помощью шаблона; в настоящее время фабричного метода для создания формата экспоненциальной записи нет. В шаблоне символ показателя степени, за которым непосредственно следует один или несколько символов цифр, указывает на экспоненциальную запись. Пример: "0.###E0" форматирует число 1234 как "1.234E3".
- Количество символов цифр после символа показателя степени задает минимальное количество цифр в показателе степени. Максимальное количество не ограничено. Отрицательные показатели степени форматируются с использованием локализованного знака минус, а не префикса и суффикса из шаблона. Это позволяет использовать такие шаблоны, как
"0.###E0 m/s". - Максимальное количество целых цифр равно сумме символов '0' и '#' перед десятичным разделителем. Минимальное количество целых цифр равно сумме символов '0' перед десятичным разделителем. Для максимального и минимального количества дробных цифр действуют те же правила, но они применяются к цифрам после десятичного разделителя и перед показателем степени. Например, в следующем шаблоне:
"#00.0####E0"минимальное количество целых цифр равно 2 ("00"), а максимальное — 3 ("#00"). Минимальное количество дробных цифр равно 1 ("0"), а максимальное — 5 ("0####"). - Минимальное и максимальное количество целых цифр интерпретируются совместно:
- Если максимальное количество целых цифр превышает минимальное и больше 1, показатель степени становится кратным максимальному количеству целых цифр, а минимальное количество целых цифр интерпретируется как 1. Чаще всего это используется для создания инженерной нотации, в которой показатель степени кратен трем, например
"##0.#####E0". При использовании этого шаблона число 12345 форматируется как"12.345E3", а 123456 — как"123.456E3". - В противном случае минимальное количество целых цифр достигается путем корректировки показателя степени. Пример: 0.00123, отформатированное с помощью
"00.###E0", дает"12.3E-4".
- Если максимальное количество целых цифр превышает минимальное и больше 1, показатель степени становится кратным максимальному количеству целых цифр, а минимальное количество целых цифр интерпретируется как 1. Чаще всего это используется для создания инженерной нотации, в которой показатель степени кратен трем, например
- Для заданного числа количество значащих цифр в мантиссе можно вычислить следующим образом:
Это означает, что обычно мантисса содержит до суммарного максимального количества целых и дробных цифр, если исходное число содержит достаточно значащих цифр. Однако если минимальное количество цифр в шаблоне превышает количество значащих цифр исходного числа, мантисса будет содержать число значащих цифр, равное суммарному минимальному количеству целых и дробных цифр. Количество значащих цифр не влияет на разбор.Mantissa Digits: min(max(Minimum Pattern Digits, Original Number Digits), Maximum Pattern Digits) Minimum pattern Digits: Minimum Integer Digits + Minimum Fraction Digits Maximum pattern Digits: Maximum Integer Digits + Maximum Fraction Digits Original Number Digits: The amount of significant digits in the number to be formattedСледует отметить, что лишние цифры целой части мантиссы переходят в дробную часть — как для сохранения точности, так и для соблюдения общего минимального количества цифр.
Это поведение можно увидеть в следующем примере:
DecimalFormat df = new DecimalFormat("#000.000##E0"); df.format(12); // returns "12.0000E0" df.format(123456789) // returns "1.23456789E8" - Шаблоны экспоненциальной записи не могут содержать разделители групп разрядов.
- Требования к реализации:
- При форматировании
Number, отличного отBigIntegerиBigDecimal,309используется в качестве верхнего предела для количества целых цифр, а340— в качестве верхнего предела для количества дробных цифр. Это происходит даже в том случае, если один из методов полученияDecimalFormat, напримерgetMinimumFractionDigits(), возвращает численно большее значение. - С версии:
- 1.1
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе NumberFormat
NumberFormat.Field, NumberFormat.Style | Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
NumberFormat.Field |
Определяет константы, используемые в качестве ключей атрибутов в AttributedCharacterIterator, возвращаемом методами NumberFormat.formatToCharacterIterator, и в качестве идентификаторов полей в FieldPosition. |
static enum |
NumberFormat.Style |
Стиль форматирования чисел. |
Краткое описание полей
Поля, объявленные в классе NumberFormat
FRACTION_FIELD, INTEGER_FIELD | Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
FRACTION_FIELD |
Константа поля, используемая для создания объекта FieldPosition. |
static final int |
INTEGER_FIELD |
Константа поля, используемая для создания объекта FieldPosition. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DecimalFormat() |
Создает DecimalFormat, используя шаблон и символы по умолчанию для текущей локали FORMAT по умолчанию. |
DecimalFormat |
Создает DecimalFormat, используя заданный шаблон и символы для текущей локали FORMAT по умолчанию. |
DecimalFormat |
Создает DecimalFormat, используя заданные шаблон и символы. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
applyLocalizedPattern |
Применяет заданный шаблон к этому объекту Format. |
void |
applyPattern |
Применяет заданный шаблон к этому объекту Format. |
Object |
clone() |
Стандартное переопределение; семантика не изменена. |
boolean |
equals |
Сравнивает указанный объект с этим DecimalFormat на равенство. |
StringBuffer |
format |
Форматирует значение double, преобразуя его в строку. |
StringBuffer |
format |
Форматирует значение long, преобразуя его в строку. |
final StringBuffer |
format |
Форматирует число и добавляет полученный текст в заданный буфер строк. |
AttributedCharacterIterator |
formatToCharacterIterator |
Форматирует объект, создавая AttributedCharacterIterator. |
Currency |
getCurrency() |
Возвращает валюту, используемую этим десятичным форматом при форматировании денежных значений. |
DecimalFormatSymbols |
getDecimalFormatSymbols() |
Возвращает копию символов десятичного формата, которые обычно не изменяются программистом или пользователем. |
int |
getGroupingSize() |
Возвращает размер группировки. |
int |
getMaximumFractionDigits() |
Возвращает максимальное количество цифр, допустимое в дробной части числа при форматировании. |
int |
getMaximumIntegerDigits() |
Возвращает максимальное количество цифр, допустимое в целой части числа при форматировании. |
int |
getMinimumFractionDigits() |
Возвращает минимальное количество цифр, допустимое в дробной части числа при форматировании. |
int |
getMinimumIntegerDigits() |
Возвращает минимальное количество цифр, допустимое в целой части числа при форматировании. |
int |
getMultiplier() |
Возвращает множитель, используемый для процентов, промилле и подобных форматов. |
String |
getNegativePrefix() |
Возвращает отрицательный префикс. |
String |
getNegativeSuffix() |
Возвращает отрицательный суффикс. |
String |
getPositivePrefix() |
Возвращает положительный префикс. |
String |
getPositiveSuffix() |
Возвращает положительный суффикс. |
RoundingMode |
getRoundingMode() |
Возвращает режим округления RoundingMode, используемый в этом DecimalFormat. |
int |
hashCode() |
Возвращает хеш-код этого DecimalFormat. |
boolean |
isDecimalSeparatorAlwaysShown() |
Позволяет получить сведения о поведении десятичного разделителя для целых чисел. |
boolean |
isParseBigDecimal() |
Возвращает, возвращает ли метод parse(java.lang.String, java.text.ParsePosition) значение BigDecimal. |
boolean |
isStrict() |
Возвращает true, если этот формат строго разбирает числа; в противном случае — false. |
Number |
parse |
Разбирает текст от начала заданной строки, чтобы получить Number. |
void |
setCurrency |
Задает валюту, используемую этим числовым форматом при форматировании денежных значений. |
void |
setDecimalFormatSymbols |
Задает символы десятичного формата, которые обычно не изменяются программистом или пользователем. |
void |
setDecimalSeparatorAlwaysShown |
Позволяет задать поведение десятичного разделителя для целых чисел. |
void |
setGroupingSize |
Задает размер группировки. |
void |
setMaximumFractionDigits |
Задает максимальное количество цифр, допустимое в дробной части числа при форматировании. |
void |
setMaximumIntegerDigits |
Задает максимальное количество цифр, допустимое в целой части числа при форматировании. |
void |
setMinimumFractionDigits |
Задает минимальное количество цифр, допустимое в дробной части числа при форматировании. |
void |
setMinimumIntegerDigits |
Задает минимальное количество цифр, допустимое в целой части числа при форматировании. |
void |
setMultiplier |
Задает множитель, используемый для процентов, промилле и подобных форматов. |
void |
setNegativePrefix |
Задает отрицательный префикс. |
void |
setNegativeSuffix |
Задает отрицательный суффикс. |
void |
setParseBigDecimal |
Задает, должно ли значение, возвращаемое методом parse(java.lang.String, java.text.ParsePosition), быть BigDecimal. |
void |
setPositivePrefix |
Задает положительный префикс. |
void |
setPositiveSuffix |
Задает положительный суффикс. |
void |
setRoundingMode |
Задает режим округления RoundingMode, используемый в этом DecimalFormat. |
void |
setStrict |
Изменяет степень строгости при разборе. |
String |
toLocalizedPattern() |
Формирует локализованную строку шаблона, отражающую текущее состояние этого объекта Format. |
String |
toPattern() |
Формирует строку шаблона, отражающую текущее состояние этого объекта Format. |
String |
toString() |
Возвращает строку, идентифицирующую этот DecimalFormat, для отладки. |
Методы, объявленные в классе NumberFormat
format, format, getAvailableLocales, getCompactNumberInstance, getCompactNumberInstance, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setGroupingUsed, setParseIntegerOnly | Модификатор и тип | Метод | Описание |
|---|---|---|
final String |
format |
Специализация метода format. |
final String |
format |
Специализация метода format. |
static Locale[] |
getAvailableLocales() |
Возвращает массив всех локалей, для которых методы get*Instance этого класса могут возвращать локализованные экземпляры. |
static NumberFormat |
getCompactNumberInstance() |
|
static NumberFormat |
getCompactNumberInstance |
Возвращает компактный числовой формат для указанной locale и formatStyle. |
static final NumberFormat |
getCurrencyInstance() |
Возвращает денежный формат для текущей локали FORMAT по умолчанию. |
static NumberFormat |
getCurrencyInstance |
Возвращает денежный формат для указанной локали. |
static final NumberFormat |
getInstance() |
Возвращает числовой формат общего назначения для текущей локали FORMAT по умолчанию. |
static NumberFormat |
getInstance |
Возвращает числовой формат общего назначения для указанной локали. |
static final NumberFormat |
getIntegerInstance() |
Возвращает целочисленный числовой формат для текущей локали FORMAT по умолчанию. |
static NumberFormat |
getIntegerInstance |
Возвращает целочисленный числовой формат для указанной локали. |
static final NumberFormat |
getNumberInstance() |
Возвращает числовой формат общего назначения для текущей локали FORMAT по умолчанию. |
static NumberFormat |
getNumberInstance |
Возвращает числовой формат общего назначения для указанной локали. |
static final NumberFormat |
getPercentInstance() |
Возвращает процентный формат для текущей локали FORMAT по умолчанию. |
static NumberFormat |
getPercentInstance |
Возвращает процентный формат для указанной локали. |
boolean |
isGroupingUsed() |
Возвращает true, если в этом формате используется группировка. |
boolean |
isParseIntegerOnly() |
Возвращает true, если этот формат разбирает числа только как целые. |
Number |
parse |
Разбирает текст от начала заданной строки, чтобы получить Number. |
final Object |
parseObject |
Разбирает текст из заданной строки, чтобы получить объект. |
void |
setGroupingUsed |
Задает, будет ли в этом формате использоваться группировка. |
void |
setParseIntegerOnly |
Задает, следует ли разбирать числа только как целые. |
Методы, объявленные в классе Format
format, parseObject | Модификатор и тип | Метод | Описание |
|---|---|---|
final String |
format |
Форматирует объект, преобразуя его в строку. |
Object |
parseObject |
Разбирает текст от начала заданной строки, чтобы получить объект. |
Методы, объявленные в классе Object
finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
DecimalFormat
public DecimalFormat()
FORMAT. Это удобный способ получить DecimalFormat, если интернационализация не является главной задачей.- Примечание к API:
- Чтобы получить стандартные форматы для заданной локали, используйте фабричные методы
NumberFormat, напримерNumberFormat.getNumberInstance(Locale). Эти фабричные методы возвращают наиболее подходящий подкласс NumberFormat для заданной локали. - См. также:
DecimalFormat
public DecimalFormat(String pattern)
FORMAT. Это удобный способ получить DecimalFormat, если интернационализация не является главной задачей. Максимальное количество целых цифр обычно не определяется шаблоном. Подробнее см. примечание в разделе Patterns.- Примечание к API:
- Чтобы получить стандартные форматы для заданной локали, используйте фабричные методы
NumberFormat, напримерNumberFormat.getNumberInstance(Locale). Эти фабричные методы возвращают наиболее подходящий подкласс NumberFormat для заданной локали. - Параметры:
-
pattern— строка шаблона без привязки к локали. - Исключения:
-
NullPointerException— еслиpatternимеет значение null -
IllegalArgumentException— если заданный шаблон недопустим. - См. также:
DecimalFormat
public DecimalFormat(String pattern, DecimalFormatSymbols symbols)
Patterns.- Примечание к API:
- Чтобы получить стандартные форматы для заданной локали, используйте фабричные методы
NumberFormat, напримерNumberFormat.getInstance(Locale)илиNumberFormat.getCurrencyInstance(Locale). Если требуются лишь небольшие изменения стандартного формата, можно изменить формат, возвращаемый фабричным методом NumberFormat. - Параметры:
-
pattern— строка шаблона без привязки к локали -
symbols— набор используемых символов - Исключения:
-
NullPointerException— если любой из заданных аргументов имеет значение null -
IllegalArgumentException— если заданный шаблон недопустим - См. также:
Подробное описание методов
format
public final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number.- Переопределяет:
-
formatв классеNumberFormat - Требования к реализации:
- Эта реализация использует максимально допустимую точность.
- Параметры:
-
number— число для форматирования -
toAppendTo—StringBuffer, в который добавляется отформатированный текст -
pos— отслеживает положение поля в возвращаемой строке. Например, при форматировании числа1234567.89в локалиLocale.US, если заданныйfieldPosition— этоNumberFormat.INTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены в 0 и 9 соответственно для выходной строки1,234,567.89. - Возвращает:
- значение, переданное в качестве
toAppendTo - Исключения:
-
IllegalArgumentException— еслиnumberимеет значение null или не является экземпляромNumber. -
NullPointerException— еслиtoAppendToилиposимеет значение null -
ArithmeticException— если требуется округление, а режим округления установлен в RoundingMode.UNNECESSARY - См. также:
format
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
- Определено в:
-
formatв классеNumberFormat - Параметры:
-
number— значение типа double для форматирования -
result— буфер, в который добавляется текст -
fieldPosition— отслеживает положение поля в возвращаемой строке. Например, при форматировании числа1234567.89в локалиLocale.US, если заданныйfieldPosition— этоNumberFormat.INTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены в 0 и 9 соответственно для выходной строки1,234,567.89. - Возвращает:
- строку отформатированного числа
- Исключения:
-
NullPointerException— еслиresultилиfieldPositionимеет значениеnull -
ArithmeticException— если требуется округление, а режим округления установлен в RoundingMode.UNNECESSARY - См. также:
format
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
- Определено в:
-
formatв классеNumberFormat - Параметры:
-
number— значение типа long для форматирования -
result— буфер, в который добавляется текст -
fieldPosition— отслеживает положение поля в возвращаемой строке. Например, при форматировании числа123456789в локалиLocale.US, если заданныйfieldPosition— этоNumberFormat.INTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены в 0 и 11 соответственно для выходной строки123,456,789. - Возвращает:
- строку отформатированного числа
- Исключения:
-
NullPointerException— еслиresultилиfieldPositionимеет значениеnull -
ArithmeticException— если требуется округление, а режим округления установлен в RoundingMode.UNNECESSARY - См. также:
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object obj)
AttributedCharacterIterator. Возвращенный AttributedCharacterIterator можно использовать для построения результирующей строки, а также для получения сведений о ней. Ключ каждого атрибута AttributedCharacterIterator будет иметь тип NumberFormat.Field, а значение атрибута будет совпадать с его ключом.
- Переопределяет:
-
formatToCharacterIteratorв классеFormat - Параметры:
-
obj— объект для форматирования - Возвращает:
- AttributedCharacterIterator, описывающий отформатированное значение.
- Исключения:
-
NullPointerException— если obj имеет значение null. -
IllegalArgumentException— если Format не может отформатировать заданный объект. -
ArithmeticException— если требуется округление, а режим округления установлен в RoundingMode.UNNECESSARY - Начиная с версии:
- 1.4
parse
public Number parse(String text, ParsePosition pos)
Number. Этот метод пытается разобрать текст, начиная с индекса, заданного параметром ParsePosition. Если разбор выполнен успешно, индекс
ParsePosition обновляется до индекса после последнего использованного символа (при разборе необязательно используются все символы до конца строки), а разобранное число возвращается. Обновленный
ParsePosition можно использовать как начальную позицию для следующего вызова этого метода. Если произошла ошибка, индекс ParsePosition не изменяется, индекс ошибки ParsePosition устанавливается в позицию символа, на котором произошла ошибка, а null возвращается.
Этот метод возвращает Long, если это возможно (например, значение находится в диапазоне [Long.MIN_VALUE, Long.MAX_VALUE] и не содержит дробной части), в противном случае возвращает Double.
Разбор может выполняться в строгом или нестрогом режиме; по умолчанию используется нестрогий режим.
В нестрогом режиме разбор завершается неудачей, если префикс и/или суффикс не пусты и не найдены из-за преждевременного завершения разбора либо если первый символ после префикса не может быть разобран.
В строгом режиме разбор завершается неудачей, если в text,
- не найден префикс. Например, префикс формата валюты
Locale.US: "$" - не найден суффикс. Например, суффикс процентного формата
Locale.US: "%" NumberFormat.isGroupingUsed()возвращаетtrue, аgetGroupingSize()не соблюдаетсяNumberFormat.isGroupingUsed()возвращаетfalse, а символ группировки обнаруженNumberFormat.isGroupingUsed()возвращаетtrue, и символ группировки встречается после десятичного разделителя- обнаружены другие символы, не являющиеся ожидаемыми символами или цифрами в числовой части
В нестрогом режиме знак минуса в negative subpatterns сопоставляется с допустимыми вариантами символа минуса без строгого соответствия.
Возвращаемый подкласс зависит от значения isParseBigDecimal(), а также от разбираемой строки.
- Если
isParseBigDecimal()имеет значение false (по умолчанию), большинство целых значений возвращается как объектыLongнезависимо от их записи:"17"и"17.000"разбираются какLong(17). Значения, не помещающиеся вLong, возвращаются какDouble. К ним относятся значения с дробной частью, бесконечные значения,NaNи значение -0.0.DecimalFormatне определяет, возвращать лиDoubleилиLong, исходя из наличия десятичного разделителя в исходной строке. Это не позволило бы точно разбирать целые числа, превышающие разрядность мантиссы типа double, например"-9,223,372,036,854,775,808.00".Вызывающий код может использовать методы
Number, напримерdoubleValue,longValueи т. д., чтобы получить нужный тип. - Если
isParseBigDecimal()имеет значение true, значения возвращаются как объектыBigDecimal. Это значения, создаваемые методомBigDecimal(String)для соответствующих строк в формате, не зависящем от локали. Особые значения отрицательной и положительной бесконечности и NaN возвращаются как экземплярыDouble, содержащие значения соответствующих константDouble.
DecimalFormat разбирает все символы Unicode, представляющие десятичные цифры согласно определению Character.digit(). Кроме того, DecimalFormat распознает в качестве цифр десять последовательных символов, начиная с локализованного нуля, определенного в объекте DecimalFormatSymbols.
- Определено в:
-
parseв классеNumberFormat - Параметры:
-
text— строка для разбора -
pos— объектParsePositionс информацией об индексе и индексе ошибки, описанной выше. - Возвращает:
- разобранное значение или
null, если разбор не удался - Исключения:
-
NullPointerException— еслиtextилиposимеет значение null. - См. также:
getDecimalFormatSymbols
public DecimalFormatSymbols getDecimalFormatSymbols()
- Возвращает:
- копию нужного объекта DecimalFormatSymbols
- См. также:
setDecimalFormatSymbols
public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
- Параметры:
-
newSymbols— требуемый объект DecimalFormatSymbols - См. также:
getPositivePrefix
public String getPositivePrefix()
Примеры: +123, $123, sFr123
- Возвращает:
- префикс положительного числа
setPositivePrefix
public void setPositivePrefix(String newValue)
Примеры: +123, $123, sFr123
- Параметры:
-
newValue— новый префикс положительного числа. Не может быть null. - Исключения:
-
NullPointerException— еслиnewValueимеет значениеnull
getNegativePrefix
public String getNegativePrefix()
Примеры: -123, ($123) (с отрицательным суффиксом), sFr-123
- Возвращает:
- префикс отрицательного числа
setNegativePrefix
public void setNegativePrefix(String newValue)
Примеры: -123, ($123) (с отрицательным суффиксом), sFr-123
- Параметры:
-
newValue— новый префикс отрицательного числа. Не может быть null. - Исключения:
-
NullPointerException— еслиnewValueимеет значениеnull
getPositiveSuffix
public String getPositiveSuffix()
Пример: 123%
- Возвращает:
- суффикс положительного числа
setPositiveSuffix
public void setPositiveSuffix(String newValue)
Пример: 123%
- Параметры:
-
newValue— новый суффикс положительного числа. Не может быть null. - Исключения:
-
NullPointerException— еслиnewValueимеет значениеnull
getNegativeSuffix
public String getNegativeSuffix()
Примеры: -123%, ($123) (с положительными суффиксами)
- Возвращает:
- суффикс отрицательного числа
setNegativeSuffix
public void setNegativeSuffix(String newValue)
Примеры: 123%
- Параметры:
-
newValue— новый суффикс отрицательного числа. Не может быть null. - Исключения:
-
NullPointerException— еслиnewValueимеет значениеnull
getMultiplier
public int getMultiplier()
- Возвращает:
- множитель
- См. также:
setMultiplier
public void setMultiplier(int newValue)
U+2030'. Пример: при множителе 100 значение 1.23 форматируется как "123", а строка "123" разбирается как 1.23. Если isParseIntegerOnly() возвращает true, строка "123" разбирается как 1.
- Параметры:
-
newValue— новый множитель - См. также:
getGroupingSize
public int getGroupingSize()
setGroupingUsed(false).- Возвращает:
- размер группировки
- См. также:
setGroupingSize
public void setGroupingSize(int newValue)
setGroupingUsed(false). Переданное значение преобразуется в byte, что может привести к потере информации. Для отрицательных значений или значений, превышающих Byte.MAX_VALUE, будет выброшено исключение IllegalArgumentException.
- Параметры:
-
newValue— новый размер группировки - Исключения:
-
IllegalArgumentException— еслиnewValueявляется отрицательным или превышаетByte.MAX_VALUE - См. также:
isDecimalSeparatorAlwaysShown
public boolean isDecimalSeparatorAlwaysShown()
Пример: десятичный разделитель ВКЛ.: 12345 → 12345.; ВЫКЛ.: 12345 → 12345
- Возвращает:
-
true, если десятичный разделитель отображается всегда; иначе —false
setDecimalSeparatorAlwaysShown
public void setDecimalSeparatorAlwaysShown(boolean newValue)
Пример: десятичный разделитель ВКЛ.: 12345 → 12345.; ВЫКЛ.: 12345 → 12345
- Параметры:
-
newValue—true, если десятичный разделитель отображается всегда; иначе —false
isStrict
public boolean isStrict()
true, если этот формат разбирает числа в строгом режиме; в противном случае — false.- Переопределяет:
-
isStrictв классеNumberFormat - Возвращает:
-
true, если этот формат разбирает числа в строгом режиме; в противном случае —false - Начиная с версии:
- 23
- См. также:
setStrict
public void setStrict(boolean strict)
- Переопределяет:
-
setStrictв классеNumberFormat - Параметры:
-
strict—true, если разбор должен выполняться в строгом режиме; иначе —false - Начиная с версии:
- 23
- См. также:
isParseBigDecimal
public boolean isParseBigDecimal()
parse(java.lang.String, java.text.ParsePosition) значение BigDecimal. Значение по умолчанию — false.- Возвращает:
-
true, если метод разбора возвращает BigDecimal; иначе —false - Начиная с версии:
- 1.5
- См. также:
setParseBigDecimal
public void setParseBigDecimal(boolean newValue)
parse(java.lang.String, java.text.ParsePosition) возвращать значение BigDecimal.- Параметры:
-
newValue—true, если метод разбора возвращает BigDecimal; иначе —false - Начиная с версии:
- 1.5
- См. также:
clone
public Object clone()
- Переопределяет:
-
cloneв классеNumberFormat - Возвращает:
- копию этого экземпляра.
- См. также:
equals
public boolean equals(Object obj)
DecimalFormat на равенство. Возвращает true, если объект также является DecimalFormat и оба формата форматируют любое значение одинаково.- Переопределяет:
-
equalsв классеNumberFormat - Требования к реализации:
- Этот метод проверяет равенство, определяя идентичность класса на основе
getClass(), а неinstanceof. Поэтому в методах equals подклассов ни один экземпляр этого класса не должен считаться равным экземпляру подкласса. - Параметры:
-
obj— объект для сравнения на равенство - Возвращает:
-
true, если указанный объект равен этомуDecimalFormat - См. также:
hashCode
public int hashCode()
DecimalFormat.- Переопределяет:
-
hashCodeв классеNumberFormat - Требования к реализации:
- Этот метод вычисляет значение хеш-кода, используя значения, возвращаемые методами
getPositivePrefix()иNumberFormat.hashCode(). - Возвращает:
- хеш-код этого
DecimalFormat - См. также:
toString
toPattern
public String toPattern()
- Возвращает:
- строку шаблона
- См. также:
toLocalizedPattern
public String toLocalizedPattern()
- Возвращает:
- строку локализованного шаблона
- См. также:
applyPattern
public void applyPattern(String pattern)
Максимальное количество цифр целой части обычно не определяется шаблоном. Подробнее см. примечание в разделе Patterns. Для отрицательных чисел используйте второй шаблон, отделённый точкой с запятой
Пример "#,#00.0#" → 1,234.56
Это означает минимум 2 цифры в целой части, 1 цифру в дробной части и максимум 2 цифры в дробной части.
Пример: "#,#00.0#;(#,#00.0#)" для отрицательных чисел в скобках.
В шаблонах для отрицательных чисел минимальное и максимальное количество цифр игнорируется; предполагается, что эти значения заданы в шаблоне для положительных чисел.
- Параметры:
-
pattern— новый шаблон - Исключения:
-
NullPointerException— еслиpatternравно null -
IllegalArgumentException— если заданный шаблон недопустим.
applyLocalizedPattern
public void applyLocalizedPattern(String pattern)
Максимальное количество цифр целой части обычно не определяется шаблоном. Подробнее см. примечание в разделе Patterns. Для отрицательных чисел используйте второй шаблон, отделённый точкой с запятой
Пример "#,#00.0#" → 1,234.56
Это означает минимум 2 цифры в целой части, 1 цифру в дробной части и максимум 2 цифры в дробной части.
Пример: "#,#00.0#;(#,#00.0#)" для отрицательных чисел в скобках.
В шаблонах для отрицательных чисел минимальное и максимальное количество цифр игнорируется; предполагается, что эти значения заданы в шаблоне для положительных чисел.
- Параметры:
-
pattern— новый шаблон - Исключения:
-
NullPointerException— еслиpatternравно null -
IllegalArgumentException— если заданный шаблон недопустим.
setMaximumIntegerDigits
public void setMaximumIntegerDigits(int newValue)
maximumIntegerDigits должно быть ≥ minimumIntegerDigits. Если новое значение
maximumIntegerDigits меньше текущего значения minimumIntegerDigits, то minimumIntegerDigits также будет установлено в новое значение. Отрицательные входные значения заменяются на 0.- Переопределяет:
-
setMaximumIntegerDigitsв классеNumberFormat - Параметры:
-
newValue— максимальное количество отображаемых цифр целой части. - См. также:
setMinimumIntegerDigits
public void setMinimumIntegerDigits(int newValue)
minimumIntegerDigits должно быть ≤ maximumIntegerDigits. Если новое значение minimumIntegerDigits превышает текущее значение maximumIntegerDigits, то
maximumIntegerDigits также будет установлено в новое значение. Отрицательные входные значения заменяются на 0.- Переопределяет:
-
setMinimumIntegerDigitsв классеNumberFormat - Параметры:
-
newValue— минимальное количество отображаемых цифр целой части. - См. также:
setMaximumFractionDigits
public void setMaximumFractionDigits(int newValue)
maximumFractionDigits должно быть ≥ minimumFractionDigits. Если новое значение maximumFractionDigits меньше текущего значения minimumFractionDigits, то minimumFractionDigits также будет установлено в новое значение. Отрицательные входные значения заменяются на 0.- Переопределяет:
-
setMaximumFractionDigitsв классеNumberFormat - Параметры:
-
newValue— максимальное количество отображаемых цифр дробной части. - См. также:
setMinimumFractionDigits
public void setMinimumFractionDigits(int newValue)
minimumFractionDigits должно быть ≤ maximumFractionDigits. Если новое значение
minimumFractionDigits превышает текущее значение
maximumFractionDigits, то maximumFractionDigits также будет установлено в новое значение. Отрицательные входные значения заменяются на 0.- Переопределяет:
-
setMinimumFractionDigitsв классеNumberFormat - Параметры:
-
newValue— минимальное количество отображаемых цифр дробной части. - См. также:
getMaximumIntegerDigits
public int getMaximumIntegerDigits()
В отличие от других ограничений количества цифр, maximumIntegerDigits не обновляется при создании или обновлении DecimalFormats с помощью строкового шаблона.
- Переопределяет:
-
getMaximumIntegerDigitsв классеNumberFormat - Возвращает:
- максимальное количество цифр
- См. также:
getMinimumIntegerDigits
public int getMinimumIntegerDigits()
- Переопределяет:
-
getMinimumIntegerDigitsв классеNumberFormat - Возвращает:
- минимальное количество цифр
- См. также:
getMaximumFractionDigits
public int getMaximumFractionDigits()
- Переопределяет:
-
getMaximumFractionDigitsв классеNumberFormat - Возвращает:
- максимальное количество цифр.
- См. также:
getMinimumFractionDigits
public int getMinimumFractionDigits()
- Переопределяет:
-
getMinimumFractionDigitsв классеNumberFormat - Возвращает:
- минимальное количество цифр
- См. также:
getCurrency
public Currency getCurrency()
DecimalFormatSymbols.getCurrency для символов этого числового формата.- Переопределяет:
-
getCurrencyв классеNumberFormat - Возвращает:
- валюту, используемую этим десятичным форматом, или
null - Начиная с версии:
- 1.4
setCurrency
public void setCurrency(Currency currency)
DecimalFormatSymbols.setCurrency для символов этого числового формата.- Переопределяет:
-
setCurrencyв классеNumberFormat - Параметры:
-
currency— новая валюта для этого десятичного формата - Исключения:
-
NullPointerException— еслиcurrencyравно null - Начиная с версии:
- 1.4
getRoundingMode
public RoundingMode getRoundingMode()
RoundingMode, используемый в этом DecimalFormat.- Переопределяет:
-
getRoundingModeв классеNumberFormat - Возвращает:
RoundingMode, используемый этим DecimalFormat.- Начиная с версии:
- 1.6
- См. также:
setRoundingMode
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode, используемый в этом DecimalFormat.- Переопределяет:
-
setRoundingModeв классеNumberFormat - Параметры:
-
roundingMode—RoundingMode, который будет использоваться - Исключения:
-
NullPointerException— еслиroundingModeравно null. - Начиная с версии:
- 1.6
- См. также:
© 1993, 2025, 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.