如何仅使用货币代码将数字格式化为货币?

时间:2018-08-20 16:30:40

标签: android number-formatting

我的业务问题如下:我有一个货币代码(例如“ USD”)和一个数字(无论是浮点数还是整数,我都可以解析),我需要使用该货币将该数字格式化为货币字符串码。例如,124.3222和“ USD”应创建字符串“ $ 124.32”。

我可以使用Currency创建一个Currency.getInstance(String)实例,这给了我符号和一些其他信息。但是,它不提供任何将数字格式化为字符串的方式。问题的另一方面,NumberFormat包含几个静态方法,这些方法返回一个NumberFormat实例,该实例能够执行我需要的操作(例如NumberFormat.getCurrencyInstance())。

NumberFormat的问题在于它们全部围绕默认语言环境或传入的语言环境。鉴于此应用的性质,语言环境毫无意义。语言环境和我需要格式化为字符串的货币之间没有关联。我既不能使用默认语言环境,也不能使用任何类型的语言环境标识符ISO值。我只有货币代码。

到目前为止,我似乎已经很近了。 (我认为)CurrencyNumberFormat.getCurrencyInstance之间存在奇怪的脱节。 Currency可以解析货币代码,但不能解析语言环境,并且不能格式化字符串,而Locale无法解析货币代码,但是可以格式化字符串。我在这里想念东西吗?

编辑:我应该澄清一下,我可以使用Currency实例提供的符号和十进制计数手动设置数字格式,但是我看不出如何弄清楚将符号放在字符串中的位置。无论如何,似乎我应该尽可能使用内置货币格式。

1 个答案:

答案 0 :(得分:0)

我发现setCurrency()上有一个NumberFormat方法。因此,我正在做的是调用NumberFormat.getCurrencyInstance(),以便获得适用于我的语言环境的格式化程序,然后对其调用setCurrency()以获取需要格式化的货币。这似乎可以满足我的需求。