Как отформатировать double с помощью DecimalFormatSymbols и валюты? - PullRequest
1 голос
/ 11 февраля 2020

Мой результат должен выглядеть так: $ 100 00,99 Мне удалось отформатировать число так, как мне нужно, но без валюты. Мне удалось раздобыть валюту отдельно, но я не могу собрать их вместе. Для формата нумерации я использовал DecimalFormatSymbol как в ответе на этот вопрос .

 private fun formatValue(value: Double, formatString: String): String {
     val formatSymbols = DecimalFormatSymbols(Locale.ENGLISH)
     formatSymbols.decimalSeparator = ','
     formatSymbols.groupingSeparator = ' '
     val formatter = DecimalFormat(formatString, formatSymbols)
     return formatter.format(value)
 }

 formatValue(amount ,"###,###.00")

Для валюты я использовал этот код:

fun getFormattedCurrency(currency: String, amount: Double): String {
     val c = Currency.getInstance(currency)
     val nf = NumberFormat.getCurrencyInstance()
     nf.currency = c
     return  nf.format(amount)
}

Как я могу объединить два?

1 Ответ

1 голос
/ 11 февраля 2020

Надеюсь, это вам поможет.

    val decimalFormatSymbols = DecimalFormatSymbols().apply {
        decimalSeparator = ','
        groupingSeparator = ' '
        setCurrency(Currency.getInstance("AED"))
    }


    val decimalFormat = DecimalFormat("$ #,###.00", decimalFormatSymbols)
    val text = decimalFormat.format(2333222)
    println(text) //$ 2 333 222,00


    val decimalFormat2 = DecimalFormat("¤ #,###.00", decimalFormatSymbols)
    val text2 = decimalFormat2.format(2333222)
    println(text2) //AED 2 333 222.00

Сообщите, что если вы используете 101 вместо указания c символа валюты, такого как $, €, он будет использовать символ в соответствии с экземпляром валюты, который вы создаете. Также вы можете получить больше информации из документов. https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

Также вы можете найти коды ISO 4217 в https://en.wikipedia.org/wiki/ISO_4217

...