У меня есть следующий метод для создания средства форматирования валюты. Есть 2 поля ввода, локаль и валюта:
private fun getCurrencyDecimalFormat(locale: Locale, currency: Currency): DecimalFormat {
val currencyFormat = NumberFormat.getCurrencyInstance(locale) as DecimalFormat
currencyFormat.positivePrefix = currencyFormat.positivePrefix + " "
currencyFormat.roundingMode = RoundingMode.DOWN
val symbol = currency.getSymbol(locale)
val decimalFormatSymbols = currencyFormat.decimalFormatSymbols
decimalFormatSymbols.currencySymbol = symbol
currencyFormat.decimalFormatSymbols = decimalFormatSymbols
currencyFormat.isParseBigDecimal = true
return currencyFormat
}
И называется так:
val currencyFormat = getCurrencyDecimalFormat(locale, currency)
return currencyFormat.format(amount)
Он отлично работает, когда ввод валюты совпадает с валютой ввода локали, поэтому:
- локаль: es_ES, валюта: EUR = 0,00 € -> OK
- локаль: en_US, валюта: USD = $0.00 -> OK
Но если у нас есть следующее, это неправильно:
- локаль: es_ES, валюта: USD = 0,00 $ -> KO
- локаль: en_US, валюта: EUR = $0.00 -> KO
Кажется, валюта установлена неправильно... есть идеи? Я делаю что-то не так?