Spec-Zone.ru › OpenJDK 21

Класс DecimalFormat

java.lang.Object
java.text.Format
java.text.NumberFormat
java.text.DecimalFormat
Все реализованные интерфейсы:
Serializable, Cloneable
public class DecimalFormat extends NumberFormat
DecimalFormat — это конкретный подкласс NumberFormat, который форматирует десятичные числа. Он обладает различными функциями, предназначенными для возможности парсинга и форматирования чисел в любом регионе, включая поддержку западных, арабских и индийских цифр. Он также поддерживает различные типы чисел, включая целые числа (123), числа с фиксированной точкой (123.4), научную запись (1.23E4), проценты (12%) и денежные суммы ($123). Все это может быть локализовано.

Чтобы получить NumberFormat для определённого региона, включая системный регион по умолчанию, вызовите один из методов-фабрик NumberFormat, таких как getInstance(). В общем случае не вызывайте конструкторы DecimalFormat напрямую, так как методы-фабрики NumberFormat могут возвращать подклассы, отличные от DecimalFormat. Если вам необходимо настроить объект форматирования, сделайте это так:

NumberFormat numFormat = NumberFormat.getInstance(loc);
if (numFormat instanceof DecimalFormat decFormat) {
    decFormat.setDecimalSeparatorAlwaysShown(true);
}

Формат DecimalFormat включает в себя шаблон и набор символов. Шаблон может быть установлен напрямую с помощью applyPattern(), или косвенно с помощью методов API. Символы хранятся в объекте DecimalFormatSymbols. При использовании методов-фабрик NumberFormat, шаблон и символы считываются из локализованных ResourceBundle.

Шаблоны

DecimalFormat шаблоны имеют следующий синтаксис:
 Pattern:
         PositivePattern
         PositivePattern ; NegativePattern
 PositivePattern:
         Prefixopt Number Suffixopt
 NegativePattern:
         Prefixopt Number Suffixopt
 Prefix:
         any Unicode characters except U+FFFE, U+FFFF, and special characters
 Suffix:
         any Unicode characters except U+FFFE, U+FFFF, and special 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 содержит положительный и отрицательный подшаблон, например, "#,##0.00;(#,##0.00)". Каждый подшаблон имеет префикс, числовую часть и суффикс. Отрицательный подшаблон является необязательным; если он отсутствует, то положительный подшаблон с префиксом минус ('-' U+002D HYPHEN-MINUS) используется в качестве отрицательного подшаблона. То есть, "0.00" эквивалентно "0.00;-0.00". Если есть явный отрицательный подшаблон, он служит только для указания отрицательного префикса и суффикса; количество цифр, минимальное количество цифр и другие характеристики такие же, как у положительного шаблона. Это означает, что "#,##0.0#;(#)" производит точно такой же результат, как "#,##0.0#;(#,##0.0#)".

Префиксы, суффиксы и различные символы, используемые для бесконечности, цифр, разделителей групп, десятичных разделителей и т. д., могут быть установлены произвольно, и они будут правильно отображаться при форматировании. Однако необходимо следить за тем, чтобы символы и строки не конфликтовали, иначе парсинг будет ненадежным. Например, для того, чтобы DecimalFormat.parse() смог различать положительные и отрицательные значения, должны отличаться либо положительные и отрицательные префиксы, либо суффиксы. (Если они идентичны, то DecimalFormat будет вести себя так, как будто отрицательный подшаблон не был указан.) Другой пример: десятичный разделитель и разделитель групп должны быть различными символами, иначе парсинг будет невозможен.

Разделитель групп обычно используется для тысяч, но в некоторых странах он разделяет десятки тысяч. Размер группы — это постоянное количество цифр между разделителями групп, например, 3 для 100 000 000 или 4 для 1 0000 0000. Если вы предоставите шаблон с несколькими разделителями групп, интервал между последним и концом целой части — это тот, который используется. Таким образом, "#,##,###,####" == "######,####" == "##,####,####".

Специальные символы шаблона

Многие символы в шаблоне интерпретируются буквально; они сопоставляются во время парсинга и выводятся без изменений при форматировании. Специальные символы, с другой стороны, представляют собой другие символы, строки или классы символов. Они должны быть заключены в кавычки, если они должны появиться в префиксе или суффиксе как литералы.

Перечисленные здесь символы используются в нелокализованных шаблонах. Локализованные шаблоны вместо этого используют соответствующие символы из объекта DecimalFormatSymbols форматировщика, и эти символы теряют свой специальный статус. Два исключения — знак валюты и кавычка, которые не локализованы.

Таблица, отображающая символ, расположение, локализованный ли он, и его значение.
Символ Расположение Локализован? Значение
0 Число Да Цифра
# Число Да Цифра, ноль отображается как отсутствие
. Число Да Десятичный разделитель или денежный десятичный разделитель
- Число Да Знак минус
, Число Да Разделитель групп или денежный разделитель групп
E Число Да Разделяет мантиссу и показатель степени в научной записи. Не нужно заключать в кавычки в префиксе или суффиксе.
; Граница подшаблона Да Разделяет положительные и отрицательные подшаблоны
% Префикс или суффикс Да Умножить на 100 и отобразить в виде процента
U+2030 Префикс или суффикс Да Умножить на 1000 и отобразить как промилле
¤ (U+00A4) Префикс или суффикс Нет Знак валюты, заменяется символом валюты. Если удвоен, заменяется международным символом валюты. Если присутствует в шаблоне, денежные десятичные/разделители групп используются вместо десятичных/разделителей групп.
' Префикс или суффикс Нет Используется для заключения в кавычки специальных символов в префиксе или суффиксе, например, "'#'#" форматирует 123 в "#123". Чтобы создать саму одинарную кавычку, используйте две подряд: "# o''clock".

Научная запись

Числа в научной записи выражаются как произведение мантиссы и степени десятки, например, 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".
  • Для данного числа количество значащих цифр в мантиссе может быть вычислено следующим образом:
     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"
    
  • Шаблоны экспоненциальной записи не могут содержать разделители групп.

Округление

DecimalFormat предоставляет режимы округления, определённые в RoundingMode, для форматирования. По умолчанию используется RoundingMode.HALF_EVEN.

Цифры

При форматировании DecimalFormat использует десять последовательных символов, начиная с локализованной цифры ноль, определённой в объекте DecimalFormatSymbols как цифры. При парсинге распознаются эти цифры, а также все Unicode-десятичные цифры, как определено в Character.digit.

Специальные значения

Не число (NaN) форматируется как строка, которая обычно имеет один символ U+FFFD. Эта строка определяется объектом DecimalFormatSymbols. Это единственное значение, для которого префиксы и суффиксы не используются.

Бесконечность форматируется как строка, которая обычно имеет один символ U+221E, с применением положительных или отрицательных префиксов и суффиксов. Строка бесконечности определяется объектом DecimalFormatSymbols.

Отрицательный ноль ("-0") парсится в

  • BigDecimal(0) если isParseBigDecimal() равно true,
  • Long(0) если isParseBigDecimal() равно false и isParseIntegerOnly() равно true,
  • Double(-0.0) если оба isParseBigDecimal() и isParseIntegerOnly() равны false.

Синхронизация

Форматы десятичных чисел обычно не синхронизированы. Рекомендуется создавать отдельные экземпляры форматировщика для каждого потока. Если несколько потоков одновременно обращаются к формату, его необходимо синхронизировать внешним образом.

Пример

// Print out a number using the localized number, integer, currency,
// and percent format for each locale
Locale[] locales = NumberFormat.getAvailableLocales();
double myNumber = -1234.56;
NumberFormat form;
for (int j = 0; j < 4; ++j) {
    System.out.println("FORMAT");
    for (Locale locale : locales) {
        if (locale.getCountry().length() == 0) {
            continue; // Skip language-only locales
        }
        System.out.print(locale.getDisplayName());
        form = switch (j) {
            case 0 -> NumberFormat.getInstance(locale);
            case 1 -> NumberFormat.getIntegerInstance(locale);
            case 2 -> NumberFormat.getCurrencyInstance(locale);
            default -> NumberFormat.getPercentInstance(locale);
        };
        if (form instanceof DecimalFormat decForm) {
            System.out.print(": " + decForm.toPattern());
        }
        System.out.print(" -> " + form.format(myNumber));
        try {
            System.out.println(" -> " + form.parse(form.format(myNumber)));
        } catch (ParseException e) {}
    }
}
Since:
1.1
См. также:
  • Java Tutorial
  • NumberFormat
  • DecimalFormatSymbols
  • ParsePosition
  • Serialized Form

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе java.text.NumberFormat

NumberFormat.Field, NumberFormat.Style

Краткое описание полей

Поля, объявленные в классе java.text.NumberFormat

FRACTION_FIELD, INTEGER_FIELD

Краткое описание конструкторов

Конструктор Описание
DecimalFormat()
Создаёт DecimalFormat с использованием шаблона по умолчанию и символов по умолчанию для локали по умолчанию FORMAT.
DecimalFormat(String pattern)
Создаёт DecimalFormat с использованием заданного шаблона и символов для локали по умолчанию FORMAT.
DecimalFormat(String pattern, DecimalFormatSymbols symbols)
Создаёт DecimalFormat с использованием заданного шаблона и символов.

Краткое описание методов

Модификатор и тип Метод Описание
void applyLocalizedPattern(String pattern)
Применяет заданный шаблон к этому объекту Format.
void applyPattern(String pattern)
Применяет заданный шаблон к этому объекту Format.
Object clone()
Стандартная перегрузка; без изменений в семантике.
boolean equals(Object obj)
Переопределяет equals
StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
Форматирует double и преобразует его в строку.
StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
Форматирует long и преобразует его в строку.
final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Форматирует число и добавляет результат к заданному буферу строк.
AttributedCharacterIterator formatToCharacterIterator(Object obj)
Форматирует объект, генерируя 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()
Переопределяет hashCode
boolean isDecimalSeparatorAlwaysShown()
Позволяет получить поведение разделителя десятичных знаков с целыми числами.
boolean isParseBigDecimal()
Возвращает, возвращает ли метод parse(java.lang.String, java.text.ParsePosition) значение %%%CODE_BLOCK_147%%.
Number parse(String text, ParsePosition pos)
Разбирает текст из строки для получения Number.
void setCurrency(Currency currency)
Устанавливает валюту, используемую этим форматом чисел при форматировании значений валюты.
void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
Устанавливает символы формата десятичных чисел, которые, как правило, не изменяются программистом или пользователем.
void setDecimalSeparatorAlwaysShown(boolean newValue)
Позволяет установить поведение разделителя десятичных знаков с целыми числами.
void setGroupingSize(int newValue)
Установить размер группировки.
void setMaximumFractionDigits(int newValue)
Устанавливает максимальное количество цифр, разрешенных в дробной части числа.
void setMaximumIntegerDigits(int newValue)
Устанавливает максимальное количество цифр, разрешенных в целой части числа.
void setMinimumFractionDigits(int newValue)
Устанавливает минимальное количество цифр, разрешенных в дробной части числа.
void setMinimumIntegerDigits(int newValue)
Устанавливает минимальное количество цифр, разрешенных в целой части числа.
void setMultiplier(int newValue)
Устанавливает множитель, используемый в процентах, промилле и подобных форматах.
void setNegativePrefix(String newValue)
Установить префикс отрицательного числа.
void setNegativeSuffix(String newValue)
Установить суффикс отрицательного числа.
void setParseBigDecimal(boolean newValue)
Устанавливает, возвращает ли метод parse(java.lang.String, java.text.ParsePosition) значение %%%CODE_BLOCK_176%%.
void setPositivePrefix(String newValue)
Установить префикс положительного числа.
void setPositiveSuffix(String newValue)
Установить суффикс положительного числа.
void setRoundingMode(RoundingMode roundingMode)
Устанавливает RoundingMode, используемый в этом DecimalFormat.
String toLocalizedPattern()
Генерирует локализованную строку шаблона, которая представляет текущее состояние этого объекта Format.
String toPattern()
Генерирует строку шаблона, которая представляет текущее состояние этого объекта Format.

Методы, объявленные в классе java.text.NumberFormat

format, format, getAvailableLocales, getCompactNumberInstance, getCompactNumberInstance, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setGroupingUsed, setParseIntegerOnly

Методы, объявленные в классе java.text.Format

format, parseObject

Методы, объявленные в классе java.lang.Object

finalize, getClass, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

DecimalFormat

public DecimalFormat()
Создаёт DecimalFormat с использованием шаблона по умолчанию и символов для локале по умолчанию FORMAT. Это удобный способ получить DecimalFormat, когда локализация не является основной задачей.

Для получения стандартных форматов для заданной локали, используйте методы-фабрики в NumberFormat, такие как getNumberInstance. Эти фабрики вернут наиболее подходящий подкласс NumberFormat для данной локали.

См. также:
  • NumberFormat.getInstance()
  • NumberFormat.getNumberInstance()
  • NumberFormat.getCurrencyInstance()
  • NumberFormat.getPercentInstance()

DecimalFormat

public DecimalFormat(String pattern)
Создаёт DecimalFormat с использованием заданного шаблона и символов для локали по умолчанию FORMAT. Это удобный способ получить DecimalFormat, когда локализация не является основной задачей.

Для получения стандартных форматов для заданной локали, используйте методы-фабрики в NumberFormat, такие как getNumberInstance. Эти фабрики вернут наиболее подходящий подкласс NumberFormat для данной локали.

Параметры:
pattern - строка шаблона, не локализованная.
Исключения:
NullPointerException - если pattern равно null
IllegalArgumentException - если заданный шаблон некорректен.
См. также:
  • NumberFormat.getInstance()
  • NumberFormat.getNumberInstance()
  • NumberFormat.getCurrencyInstance()
  • NumberFormat.getPercentInstance()

DecimalFormat

public DecimalFormat(String pattern, DecimalFormatSymbols symbols)
Создаёт DecimalFormat с использованием заданного шаблона и символов. Используйте этот конструктор, когда вам нужно полностью настроить поведение формата.

Для получения стандартных форматов для заданной локали, используйте методы-фабрики в NumberFormat, такие как getInstance или getCurrencyInstance. Если вам нужны только незначительные корректировки стандартного формата, вы можете изменить формат, возвращаемый методом-фабрикой NumberFormat.

Параметры:
pattern - строка шаблона, не локализованная
symbols - набор символов для использования
Исключения:
NullPointerException - если любой из переданных аргументов равен null
IllegalArgumentException - если заданный шаблон некорректен
См. также:
  • NumberFormat.getInstance()
  • NumberFormat.getNumberInstance()
  • NumberFormat.getCurrencyInstance()
  • NumberFormat.getPercentInstance()
  • DecimalFormatSymbols

Подробное описание методов

format

public final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Форматирует число и добавляет полученный текст в заданный буфер строк. Число может быть любого подкласса Number.

Эта реализация использует максимальную точность.

Переопределяет:
format в классе NumberFormat
Параметры:
number - число для форматирования
toAppendTo - буфер строк, в который добавляется отформатированный текст
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
См. также:
  • FieldPosition

format

public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
Форматирует double в строку.
Определено в:
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
См. также:
  • FieldPosition

format

public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
Форматирует long в строку.
Определено в:
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
См. также:
  • FieldPosition

formatToCharacterIterator

public AttributedCharacterIterator formatToCharacterIterator(Object obj)
Форматирует объект, создавая AttributedCharacterIterator. Вы можете использовать возвращаемый AttributedCharacterIterator для построения результирующей строки, а также для определения информации о результирующей строке.

Каждый ключ атрибута AttributedCharacterIterator будет типа NumberFormat.Field, а значение атрибута будет таким же, как и ключ атрибута.

Переопределяет:
formatToCharacterIterator в классе Format
Параметры:
obj - объект для форматирования
Возвращает:
AttributedCharacterIterator, описывающий отформатированное значение.
Исключения:
NullPointerException - если obj равен null.
IllegalArgumentException - когда формат не может отформатировать данный объект.
ArithmeticException - если требуется округление с режимом округления RoundingMode.UNNECESSARY
С тех пор:
1.4

parse

public Number parse(String text, ParsePosition pos)
Парсит текст из строки для получения Number.

Метод пытается распарсить текст, начиная с индекса, заданного pos. Если парсинг успешен, то индекс pos обновляется до индекса после последнего используемого символа (парсинг не обязательно использует все символы до конца строки), и возвращается распаршенное число. Обновлённый pos может быть использован для указания начальной точки для следующего вызова этого метода. Если произошла ошибка, то индекс pos не изменяется, индекс ошибки в pos устанавливается в индекс символа, где произошла ошибка, и возвращается null.

Возвращаемый подкласс зависит от значения isParseBigDecimal(), а также от парсируемой строки.

  • Если isParseBigDecimal() ложно (по умолчанию), большинство целых значений возвращаются как объекты 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() истинно, значения возвращаются как объекты BigDecimal. Значения — это те, которые построены методом BigDecimal(String) для соответствующих строк в локали-независимом формате. Специальные случаи отрицательной и положительной бесконечности и NaN возвращаются как экземпляры Double, содержащие значения соответствующих констант Double.

DecimalFormat парсит все символы Unicode, которые представляют десятичные цифры, как определено в Character.digit(). Кроме того, DecimalFormat также распознаёт в качестве цифр десять последовательных символов, начиная с локализованной нулевой цифры, определённой в объекте DecimalFormatSymbols.

Specified by:
parse в классе NumberFormat
Parameters:
text - строка для парсинга
pos - Объект ParsePosition с информацией об индексе и индексе ошибки, как описано выше.
Returns:
распаршенное значение или null в случае ошибки парсинга
Throws:
NullPointerException - если text или pos равно null.
See Also:
  • NumberFormat.isParseIntegerOnly()
  • Format.parseObject(java.lang.String, java.text.ParsePosition)

getDecimalFormatSymbols

public DecimalFormatSymbols getDecimalFormatSymbols()
Возвращает копию символов формата десятичных чисел, которые обычно не изменяются программистом или пользователем.
Returns:
копия необходимых символов DecimalFormatSymbols
See Also:
  • DecimalFormatSymbols

setDecimalFormatSymbols

public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
Устанавливает символы формата десятичных чисел, которые обычно не изменяются программистом или пользователем.
Parameters:
newSymbols - необходимые символы DecimalFormatSymbols
See Also:
  • DecimalFormatSymbols

getPositivePrefix

public String getPositivePrefix()
Получить положительный префикс.

Примеры: +123, $123, sFr123

Returns:
положительный префикс

setPositivePrefix

public void setPositivePrefix(String newValue)
Установить положительный префикс.

Примеры: +123, $123, sFr123

Parameters:
newValue - новый положительный префикс

getNegativePrefix

public String getNegativePrefix()
Получить отрицательный префикс.

Примеры: -123, ($123) (с отрицательным суффиксом), sFr-123

Returns:
отрицательный префикс

setNegativePrefix

public void setNegativePrefix(String newValue)
Установить отрицательный префикс.

Примеры: -123, ($123) (с отрицательным суффиксом), sFr-123

Parameters:
newValue - новый отрицательный префикс

getPositiveSuffix

public String getPositiveSuffix()
Получить положительный суффикс.

Пример: 123%

Returns:
положительный суффикс

setPositiveSuffix

public void setPositiveSuffix(String newValue)
Установить положительный суффикс.

Пример: 123%

Parameters:
newValue - новый положительный суффикс

getNegativeSuffix

public String getNegativeSuffix()
Получить отрицательный суффикс.

Примеры: -123%, ($123) (с положительными суффиксами)

Returns:
отрицательный суффикс

setNegativeSuffix

public void setNegativeSuffix(String newValue)
Установить отрицательный суффикс.

Примеры: 123%

Parameters:
newValue - новый отрицательный суффикс

getMultiplier

public int getMultiplier()
Получение множителя для использования в процентах, промилле и аналогичных форматах.
Returns:
множитель
See Also:
  • setMultiplier(int)

setMultiplier

public void setMultiplier(int newValue)
Устанавливает множитель для использования в процентах, промилле и аналогичных форматах. Для формата процентов установите множитель в 100 и суффиксы в '%' (для арабского языка используйте арабский знак процента). Для формата промилле установите множитель в 1000 и суффиксы в 'U+2030'.

Пример: с множителем 100, 1.23 форматируется как "123", а "123" распарсивается в 1.23.

Parameters:
newValue - новый множитель
See Also:
  • getMultiplier()

getGroupingSize

public int getGroupingSize()
Возвращает размер группировки. Размер группировки — это количество цифр между разделителями группировки в целой части числа. Например, в числе "123 456,78" размер группировки равен 3. Размер группировки, равный нулю, означает, что группировка не используется, что обеспечивает такое же форматирование, как при вызове setGroupingUsed(false).
Returns:
размер группировки
See Also:
  • setGroupingSize(int)
  • NumberFormat.isGroupingUsed()
  • DecimalFormatSymbols.getGroupingSeparator()

setGroupingSize

public void setGroupingSize(int newValue)
Устанавливает размер группировки. Размер группировки — это количество цифр между разделителями группировки в целой части числа. Например, в числе "123 456,78" размер группировки равен 3. Размер группировки, равный нулю, означает, что группировка не используется, что обеспечивает такое же форматирование, как при вызове setGroupingUsed(false).

Передаваемое значение преобразуется в байт, что может привести к потере информации. Значения, которые являются отрицательными или больше, чем Byte.MAX_VALUE, вызовут исключение IllegalArgumentException.

Parameters:
newValue - новый размер группировки
Throws:
IllegalArgumentException - если newValue отрицателен или больше, чем Byte.MAX_VALUE
See Also:
  • getGroupingSize()
  • NumberFormat.setGroupingUsed(boolean)
  • DecimalFormatSymbols.setGroupingSeparator(char)

isDecimalSeparatorAlwaysShown

public boolean isDecimalSeparatorAlwaysShown()
Позволяет получить поведение десятичного разделителя с целыми числами. (Десятичный разделитель всегда будет отображаться с десятичными числами.)

Пример: Десятичный включён: 12345 → 12345,; Выключен: 12345 → 12345

Returns:
true если десятичный разделитель всегда отображается; false в противном случае

setDecimalSeparatorAlwaysShown

public void setDecimalSeparatorAlwaysShown(boolean newValue)
Позволяет установить поведение десятичного разделителя с целыми числами. (Десятичный разделитель всегда будет отображаться с десятичными числами.)

Пример: Десятичный включён: 12345 → 12345,; Выключен: 12345 → 12345

Parameters:
newValue - true если десятичный разделитель всегда отображается; false в противном случае

isParseBigDecimal

public boolean isParseBigDecimal()
Возвращает, возвращает ли метод parse(java.lang.String, java.text.ParsePosition) объект BigDecimal. Значение по умолчанию — false.
Returns:
true если метод parse возвращает BigDecimal; false в противном случае
Since:
1.5
See Also:
  • setParseBigDecimal(boolean)

setParseBigDecimal

public void setParseBigDecimal(boolean newValue)
Устанавливает, возвращает ли метод parse(java.lang.String, java.text.ParsePosition) значение типа BigDecimal.
Parameters:
newValue - true если метод parse возвращает BigDecimal; false в противном случае
Since:
1.5
See Also:
  • isParseBigDecimal()

clone

public Object clone()
Стандартная перегрузка; семантика не изменяется.
Overrides:
clone в классе NumberFormat
Returns:
клонированный экземпляр.
See Also:
  • Cloneable

equals

public boolean equals(Object obj)
Переопределяет equals
Overrides:
equals в классе NumberFormat
Parameters:
obj - объект-ссылка для сравнения.
Returns:
true если этот объект такой же, как аргумент obj; false в противном случае.
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Переопределяет hashCode
Overrides:
hashCode в классе NumberFormat
Returns:
значение хэш-кода для этого объекта.
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toPattern

public String toPattern()
Генерирует строку шаблона, представляющую текущее состояние объекта Format.
Returns:
строка шаблона
See Also:
  • applyPattern(java.lang.String)

toLocalizedPattern

public String toLocalizedPattern()
Генерирует локализованную строку шаблона, представляющую текущее состояние объекта Format.
Returns:
локализованная строка шаблона
See Also:
  • applyPattern(java.lang.String)

applyPattern

public void applyPattern(String pattern)
Применяет заданный шаблон к этому объекту Format. Шаблон — это сокращенное описание различных свойств форматирования. Эти свойства также можно изменить по отдельности с помощью различных методов-сеттеров.

Количество целых цифр, установленных этой процедурой, не ограничено, так как это типичное желание конечного пользователя; используйте setMaximumInteger, если хотите установить действительное значение. Для отрицательных чисел используйте второй шаблон, разделенный точкой с запятой

Пример "#,#00.0#" → 1 234,56

Это означает минимум 2 целых цифры, 1 дробную цифру и максимум 2 дробных цифры.

Пример: "#,#00.0#;(#,#00.0#)" для отрицательных значений в скобках.

В шаблонах для отрицательных чисел минимальное и максимальное количество цифр игнорируется; предполагается, что они установлены в шаблоне для положительных чисел.

Parameters:
pattern - новый шаблон
Throws:
NullPointerException - если pattern равно null
IllegalArgumentException - если заданный шаблон некорректен.

applyLocalizedPattern

public void applyLocalizedPattern(String pattern)
Применяет заданный шаблон к этому объекту Format. Предполагается, что шаблон использует локализованную нотацию. Шаблон — это сокращенное описание различных свойств форматирования. Эти свойства также можно изменить по отдельности с помощью различных методов-сеттеров.

Количество целых цифр, установленных этой процедурой, не ограничено, так как это типичное желание конечного пользователя; используйте setMaximumInteger, если хотите установить действительное значение. Для отрицательных чисел используйте второй шаблон, разделенный точкой с запятой

Пример "#,#00.0#" → 1 234,56

Это означает минимум 2 целых цифры, 1 дробную цифру и максимум 2 дробных цифры.

Пример: "#,#00.0#;(#,#00.0#)" для отрицательных значений в скобках.

В шаблонах для отрицательных чисел минимальное и максимальное количество цифр игнорируется; предполагается, что они установлены в шаблоне для положительных чисел.

Parameters:
pattern - новый шаблон
Throws:
NullPointerException - если pattern равно null
IllegalArgumentException - если заданный шаблон некорректен.

setMaximumIntegerDigits

public void setMaximumIntegerDigits(int newValue)
Устанавливает максимальное количество цифр, разрешенных в целой части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений newValue и 309. Отрицательные значения входных данных заменяются на 0.
Overrides:
setMaximumIntegerDigits в классе NumberFormat
Parameters:
newValue - максимальное количество целых цифр для отображения; если меньше нуля, то используется ноль. Конкретный подкласс может наложить верхний предел на это значение, соответствующий типу числового типа, который форматируется.
See Also:
  • NumberFormat.setMaximumIntegerDigits(int)

setMinimumIntegerDigits

public void setMinimumIntegerDigits(int newValue)
Устанавливает минимальное количество цифр, разрешенных в целой части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений newValue и 309. Отрицательные значения входных данных заменяются на 0.
Overrides:
setMinimumIntegerDigits в классе NumberFormat
Parameters:
newValue - минимальное количество целых цифр для отображения; если меньше нуля, то используется ноль. Конкретный подкласс может наложить верхний предел на это значение, соответствующий типу числового типа, который форматируется.
See Also:
  • NumberFormat.setMinimumIntegerDigits(int)

setMaximumFractionDigits

public void setMaximumFractionDigits(int newValue)
Устанавливает максимальное количество цифр, разрешенных в дробной части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений newValue и 340. Отрицательные значения входных данных заменяются на 0.
Overrides:
setMaximumFractionDigits в классе NumberFormat
Parameters:
newValue - максимальное количество дробных цифр для отображения; если меньше нуля, то используется ноль. Конкретный подкласс может наложить верхний предел на это значение, соответствующий типу числового типа, который форматируется.
See Also:
  • NumberFormat.setMaximumFractionDigits(int)

setMinimumFractionDigits

public void setMinimumFractionDigits(int newValue)
Устанавливает минимальное количество цифр, разрешенных в дробной части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений newValue и 340. Отрицательные значения входных данных заменяются на 0.
Overrides:
setMinimumFractionDigits в классе NumberFormat
Parameters:
newValue - минимальное количество дробных цифр для отображения; если меньше нуля, то используется ноль. Конкретный подкласс может наложить верхний предел на это значение, соответствующий типу числового типа, который форматируется.
See Also:
  • NumberFormat.setMinimumFractionDigits(int)

getMaximumIntegerDigits

public int getMaximumIntegerDigits()
Возвращает максимальное количество цифр, разрешенных в целой части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений возвращаемого значения и 309.
Overrides:
getMaximumIntegerDigits в классе NumberFormat
Returns:
максимальное количество цифр
See Also:
  • setMaximumIntegerDigits(int)

getMinimumIntegerDigits

public int getMinimumIntegerDigits()
Возвращает минимальное количество цифр, разрешенных в целой части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений возвращаемого значения и 309.
Overrides:
getMinimumIntegerDigits в классе NumberFormat
Returns:
минимальное количество цифр
See Also:
  • setMinimumIntegerDigits(int)

getMaximumFractionDigits

public int getMaximumFractionDigits()
Возвращает максимальное количество цифр, разрешенных в дробной части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений возвращаемого значения и 340.
Overrides:
getMaximumFractionDigits в классе NumberFormat
Returns:
максимальное количество цифр.
See Also:
  • setMaximumFractionDigits(int)

getMinimumFractionDigits

public int getMinimumFractionDigits()
Возвращает минимальное количество цифр, разрешенных в дробной части числа. Для форматирования чисел, отличных от объектов BigInteger и BigDecimal, используется меньшее из значений возвращаемого значения и 340.
Overrides:
getMinimumFractionDigits в классе NumberFormat
Returns:
минимальное количество цифр
See Also:
  • setMinimumFractionDigits(int)

getCurrency

public Currency getCurrency()
Возвращает валюту, используемую этим форматом десятичных чисел при форматировании значений валюты. Валюта получается путем вызова DecimalFormatSymbols.getCurrency в символах этого числового формата.
Overrides:
getCurrency в классе NumberFormat
Возвращает:
используемую для этого формата десятичных чисел валюту или null
Since:
1.4

setCurrency

public void setCurrency(Currency currency)
Устанавливает валюту, используемую этим числовым форматом при форматировании значений валюты. Это не обновляет минимальное или максимальное количество знаков после запятой, используемых числовым форматом. Валюта устанавливается путем вызова DecimalFormatSymbols.setCurrency в символах этого числового формата.
Overrides:
setCurrency в классе NumberFormat
Параметры:
currency - новая валюта, которая будет использоваться этим форматом десятичных чисел
Исключения:
NullPointerException - если currency равно null
Since:
1.4

getRoundingMode

public RoundingMode getRoundingMode()
Получает RoundingMode, используемый в этом DecimalFormat.
Overrides:
getRoundingMode в классе NumberFormat
Возвращает:
Используемый для DecimalFormat RoundingMode.
Since:
1.6
См. также:
  • setRoundingMode(RoundingMode)

setRoundingMode

public void setRoundingMode(RoundingMode roundingMode)
Устанавливает RoundingMode, используемый в этом DecimalFormat.
Overrides:
setRoundingMode в классе NumberFormat
Параметры:
roundingMode - Используемый RoundingMode
Исключения:
NullPointerException - если roundingMode равно null.
Since:
1.6
См. также:
  • getRoundingMode()

© 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/DecimalFormat.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API