首页 > 解决方案 > 如何仅使用货币代码将数字格式化为货币?

问题描述

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

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

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

似乎我已经很近了,但到目前为止。(在我看来)CurrencyNumberFormat.getCurrencyInstance. Currency可以解析货币代码但不能解析语言环境并且不能格式化字符串,而Locale不能解析货币代码但可以格式化字符串。我在这里错过了什么吗?

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

标签: androidnumber-formatting

解决方案


我发现有一种setCurrency()方法NumberFormat。所以我正在做的是调用NumberFormat.getCurrencyInstance()所以我得到了我的语言环境的格式化程序,然后调用setCurrency()它来获取我需要格式化的货币。这似乎可以满足我的需要。


推荐阅读