我正在尝试找到一种使用正确的逗号,空格,将其他分隔符位置指向并定位货币代码的正确方法,将货币代码正确地设置为后缀或前缀。另外,我想使用负数。
我发现了什么?
我正在尝试Google并尝试每种解决方案,最简单的方法是:
private val format: DecimalFormat = NumberFormat.getCurrencyInstance(globalLocale) as DecimalFormat
fun format(amount: Double, currencyCode: String): String {
format.currency = Currency.getInstance(currencyCode)
return format.format(amount)
}
其中globalLocale
是Locale.getDefault()
->手机的语言环境。
问题在于负数,出于某些原因,它用括号括起来,调用format(-10.00, "EUR")
返回(EUR10.00)
我找到了一种解决方案,以应用模式:
format.applyPattern("$#,##0.00;-$#,##0.00")
,但是这种硬编码会阻止货币符号的位置和空格/逗号/点的本地化。
如何获得此结果?
amount
和currencyCode
并获得正确的localised
价格,而没有带负号的括号吗?编辑 似乎只有Locale.US才有这个问题,所以问题是如何避免在美国语言环境中出现括号?
答案 0 :(得分:0)
object Currency {
fun format(num: Double, currency: String, maxFractionDigits: Int?): String {
val format = NumberFormat.getCurrencyInstance(Locale.getDefault())
format.maximumFractionDigits = maxFractionDigits ?: 0
val cFormat = Currency.getInstance(currency)
format.currency = cFormat
return format.format(num)
}
}
val amountStr = Currency.format(
budgetAllocationModel.used ?: 0.0,
budgetAllocationModel.currency ?: "USD", 0
)
货币是我用来通过Local.getDefault()获取货币的本地字符串来隐藏货币的对象。
amountStr是使用该对象的示例