android - 如何仅使用货币代码将数字格式化为货币?
问题描述
我的业务问题如下:我有一个货币代码(例如“USD”)和一个数字(浮点数或整数,我都可以解析),我需要使用货币代码将此数字格式化为货币字符串。例如,124.3222
“USD”应该创建字符串“$124.32”。
我可以Currency
使用创建一个实例Currency.getInstance(String)
,它为我提供了符号和一些其他信息。但是,它没有提供任何将数字格式化为字符串的方法。在问题的另一方面,NumberFormat
包含几个静态方法,它们返回一个NumberFormat
能够做我需要的实例(例如NumberFormat.getCurrencyInstance()
)。
问题NumberFormat
在于它们都以默认语言环境或传入的语言环境为中心。鉴于此应用程序的性质,语言环境毫无意义。语言环境和我需要格式化为字符串的货币之间没有关联。我既不能使用默认语言环境,也没有任何类型的语言环境标识符 ISO 值。我只有货币代码。
似乎我已经很近了,但到目前为止。(在我看来)Currency
和NumberFormat.getCurrencyInstance
. Currency
可以解析货币代码但不能解析语言环境并且不能格式化字符串,而Locale
不能解析货币代码但可以格式化字符串。我在这里错过了什么吗?
编辑:我应该澄清一下,我可以使用Currency
实例提供的符号和十进制计数手动格式化数字,但我不知道如何确定将符号放在字符串中的哪个位置。无论如何,我似乎应该尽可能使用内置的货币格式。
解决方案
我发现有一种setCurrency()
方法NumberFormat
。所以我正在做的是调用NumberFormat.getCurrencyInstance()
所以我得到了我的语言环境的格式化程序,然后调用setCurrency()
它来获取我需要格式化的货币。这似乎可以满足我的需要。
推荐阅读
- ios - 由于使用了非公开 API,无法将应用上传到 iTunes Connect
- c# - 如何使用变量定义 EF 6 父子关系?
- regex - 正则表达式将除尾随括号外的所有文本与数字匹配
- powershell - Powershell Asynchronous Function Call
- here-api - 响应中具有相同参数的路由和通行费服务返回不同的行程
- c++ - c++继承编译问题未定义对派生类的引用
- objective-c - Xcode 权利“com.apple.security.inherit”似乎不起作用
- ios - 在一个视图中强制横向
- android - 删除片段中的溢出菜单 3 点
- docker - 在 docker 中配置 Traefik 以路由子文件夹