Класс 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" (переопределение региона) расширения Unicode, десятичные цифры и/или страна, используемые для форматирования, переопределяются. Если указаны как "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для форматирования чисел. Он использует алгоритм округления по ближайшему с чётным значением. Для изменения режима округления используйтеsetRoundingMode.NumberFormatвозвращаемый методами статической фабрики настроен на округление чисел с плавающей точкой, используя алгоритм округления по ближайшему с чётным значением (см.RoundingMode.HALF_EVEN) для форматирования. - С:
- 1.1
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
NumberFormat.Field |
Определяет константы, используемые в качестве ключей атрибутов в AttributedCharacterIterator возвращаемом NumberFormat.formatToCharacterIterator и как идентификаторы полей в FieldPosition. |
static enum |
NumberFormat.Style |
Стиль форматирования чисел. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
FRACTION_FIELD |
Постоянная для поля, используемая для построения объекта FieldPosition. |
static final int |
INTEGER_FIELD |
Постоянная для поля, используемая для построения объекта FieldPosition. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Переопределяет Cloneable. |
boolean |
equals |
Переопределяет equals. |
final String |
format |
Специализация форматирования. |
abstract StringBuffer |
format |
Специализация форматирования. |
final String |
format |
Специализация форматирования. |
abstract StringBuffer |
format |
Специализация форматирования. |
StringBuffer |
format |
Форматирует число и добавляет полученный текст в заданный буфер строк. |
static Locale[] |
getAvailableLocales() |
Возвращает массив всех языковых сред, для которых методы get*Instance этого класса могут возвращать локализованные экземпляры. |
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, используемый в этом NumberFormat. |
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, используемый в этом NumberFormat. |
Методы, объявленные в классе 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- StringBuffer, в который будет добавлен форматированный текст -
pos- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа1234567.89вLocale.USлокали, если заданноеfieldPositionравноINTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 9 для возвращаемой строки1,234,567.89. - Возвращает:
- Форматированный StringBuffer
- Исключения:
-
ArithmeticException- если округление необходимо, а режим округления установлен в RoundingMode.UNNECESSARY - См. также:
format
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
- Параметры:
-
number- Длинное целое число для форматирования -
toAppendTo- StringBuffer, в который будет добавлен форматированный текст -
pos- отслеживает позицию поля в возвращаемой строке. Например, для форматирования числа123456789вLocale.USлокали, если заданноеfieldPositionравноINTEGER_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 11 для возвращаемой строки123,456,789. - Возвращает:
- Форматированный StringBuffer
- Исключения:
-
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()
FORMAT со стилем форматирования "SHORT".- Возвращает:
- Экземпляр
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.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()
- Возвращает:
-
trueесли используется группировка;falseв противном случае - См. также:
setGroupingUsed
public void setGroupingUsed(boolean newValue)
- Параметры:
-
newValue-trueесли используется группировка;falseв противном случае - См. также:
getMaximumIntegerDigits
public int getMaximumIntegerDigits()
- Возвращает:
- максимальное количество цифр
- См. также:
setMaximumIntegerDigits
public void setMaximumIntegerDigits(int newValue)
- Параметры:
-
newValue- максимальное число цифр целой части; если меньше нуля, то используется ноль. Конкретный подкласс может установить верхний предел для этого значения, соответствующий типу числовых данных, которые форматируются. - См. также:
getMinimumIntegerDigits
public int getMinimumIntegerDigits()
- Возвращает:
- минимальное количество цифр
- См. также:
setMinimumIntegerDigits
public void setMinimumIntegerDigits(int newValue)
- Параметры:
-
newValue- минимальное количество цифр целой части; если меньше нуля, то используется ноль. Конкретный подкласс может установить верхний предел для этого значения, соответствующий типу числовых данных, которые форматируются. - См. также:
getMaximumFractionDigits
public int getMaximumFractionDigits()
- Возвращает:
- максимальное количество цифр.
- См. также:
setMaximumFractionDigits
public void setMaximumFractionDigits(int newValue)
- Параметры:
-
newValue- максимальное число цифр дробной части; если меньше нуля, то используется ноль. Конкретный подкласс может установить верхний предел для этого значения, соответствующий типу числовых данных, которые форматируются. - См. также:
getMinimumFractionDigits
public int getMinimumFractionDigits()
- Возвращает:
- минимальное количество цифр
- См. также:
setMinimumFractionDigits
public void setMinimumFractionDigits(int newValue)
- Параметры:
-
newValue- минимальное число цифр дробной части; если меньше нуля, то используется ноль. Конкретный подкласс может установить верхний предел для этого значения, соответствующий типу числовых данных, которые форматируются. - См. также:
getCurrency
public Currency getCurrency()
setCurrency. В реализации по умолчанию вызывается UnsupportedOperationException.
- Возвращает:
- валюту, используемую этим форматом числа, или
null - Исключения:
-
UnsupportedOperationException- если класс формата числа не реализует форматирование валюты - С момента:
- 1.4
setCurrency
public void setCurrency(Currency currency)
В реализации по умолчанию вызывается UnsupportedOperationException.
- Параметры:
-
currency- новая валюта, используемая этим форматом числа - Исключения:
-
UnsupportedOperationException- если класс формата числа не реализует форматирование валюты -
NullPointerException- еслиcurrencyравно null - С момента:
- 1.4
getRoundingMode
public RoundingMode getRoundingMode()
RoundingMode используемое в этом NumberFormat. В реализации по умолчанию этого метода в NumberFormat всегда выбрасывается UnsupportedOperationException. Подклассы, которые обрабатывают различные режимы округления, должны переопределять этот метод.- Возвращает:
- Используемое в NumberFormat
RoundingMode. - Исключения:
-
UnsupportedOperationException- Реализация по умолчанию всегда выбрасывает это исключение - С момента:
- 1.6
- См. также:
setRoundingMode
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode, используемое в этом NumberFormat. В реализации по умолчанию этого метода в NumberFormat всегда выбрасывается UnsupportedOperationException. Подклассы, которые обрабатывают различные режимы округления, должны переопределять этот метод.- Параметры:
-
roundingMode- ИспользуемыйRoundingMode - Исключения:
-
UnsupportedOperationException- Реализация по умолчанию всегда выбрасывает это исключение -
NullPointerException- еслиroundingModeравно null - С момента:
- 1.6
- См. также:
© 1993, 2021, 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/17/docs/api/java.base/java/text/NumberFormat.html