Android 如何仅使用货币代码将数字格式化为货币?
我的业务问题如下:我有一个货币代码(例如“USD”)和一个数字(浮动或整数,我可以用任何一种方式解析),我需要使用货币代码将这个数字格式化为货币字符串。例如,Android 如何仅使用货币代码将数字格式化为货币?,android,number-formatting,Android,Number Formatting,我的业务问题如下:我有一个货币代码(例如“USD”)和一个数字(浮动或整数,我可以用任何一种方式解析),我需要使用货币代码将这个数字格式化为货币字符串。例如,124.3222和“USD”应创建字符串“$124.32” 我可以使用Currency.getInstance(String)创建一个Currency实例,它为我提供了符号和一些其他信息。但是,它不提供任何将数字格式化为字符串的方法。问题的另一方面,NumberFormat包含几个静态方法,这些方法返回一个NumberFormat实例,该实
124.3222
和“USD”应创建字符串“$124.32”
我可以使用Currency.getInstance(String)
创建一个Currency
实例,它为我提供了符号和一些其他信息。但是,它不提供任何将数字格式化为字符串的方法。问题的另一方面,NumberFormat
包含几个静态方法,这些方法返回一个NumberFormat
实例,该实例能够执行我需要的操作(例如NumberFormat.getCurrencyInstance()
)
NumberFormat
的问题是它们都以默认区域设置或传入的区域设置为中心。鉴于此应用程序的性质,区域设置毫无意义。语言环境和我需要格式化为字符串的货币之间没有关联。我既不能使用默认区域设置,也没有任何类型的区域设置标识符ISO值。我只有货币代码
我似乎离得很近,但离得很远。在我看来,Currency
和NumberFormat.getCurrencyInstance
之间有一个奇怪的分离Currency
可以解析货币代码,但不能解析区域设置,也不能格式化字符串;而locale
不能解析货币代码,但可以格式化字符串。我是不是遗漏了什么
编辑:我应该澄清一下,我可以使用
Currency
实例提供的符号和十进制计数手动格式化数字,但我不知道如何确定符号在字符串中的位置。无论如何,似乎我应该尽可能使用内置的货币格式。我发现NumberFormat
上有一个setCurrency()
方法。因此,我要做的是调用NumberFormat.getCurrencyInstance()
,以便为我的区域设置一个格式化程序,然后为需要格式化的货币调用setCurrency()
。这似乎满足了我的需要。从我对中链接答案的解释来看,货币格式是特定于语言环境的(即爱尔兰和意大利的小数分隔符不同)。