Как получить локаль числового формата в Java / Kotlin?

#java #kotlin #locale #number-formatting

#java #kotlin #локаль #форматирование чисел

Вопрос:

Согласно https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html , NumberFormat.getInstance() вы получите NumberFormat экземпляр в текущей локали. Я хотел бы проверить после создания экземпляра, какой языковой стандарт использует подобный метод getLocale() , но, похоже, такой метод там не задокументирован.

Лучшее, что я мог сделать, чтобы убедиться в этом, это вызвать Locale.getDefault() в оболочке Kotlin ( kotlinc ):

 >>> import java.math.BigDecimal
>>> import java.text.NumberFormat
>>> NumberFormat.getInstance().format(BigDecimal(1500))
1,500
>>> import java.util.Locale
>>> Locale.getDefault()
en_US
  

Нет NumberFormat.getLocale() метода?

Ответ №1:

Нет NumberFormat.getLocale() метода?

Чего вы не можете сделать, так это вызвать тот же метод, который NumberFormat.getInstance() выполняет под капотом:

 Locale defaultLocale = Locale.getDefault(Locale.Category.FORMAT);
  

В Java 8 есть два Category параметра: https://docs.oracle.com/javase/8/docs/api/java/util/Locale .Category.html. Если вам нужен DISPLAY один, просто замените аргумент.