如何将ISO4217货币代码提供给NumberFormat?

时间:2012-11-01 16:14:39

标签: android string currency iso number-formatting

我想避免使用Locale,而是使用货币代码(ISO 4217,如“USD”)。我理解如何使用货币代码设置Currency类,但是,如何将此货币合并为一个NumberFormat以将双倍格式化为所述货币?

我同时理解NumberFormat和货币,但我如何将这些结合起来将双打格式化为真实货币字符串,例如4.00 - > $ 4.00?我必须使用NumberFormat,因为我在这个例子中删除小数位以产生诸如$ 4的整个货币数字。

感谢您的帮助, 莱恩

编辑:答案,.setCurrency,这是我在NumberFormat中没注意到的,doh!我过于专注于使用Currency构建NumberFormat,但是我很挣扎,因为你只能从Locale构造。希望我早些想到这个。谢谢!下次我将阅读更接近的方法列表。我KNEW NumberFormat HAD支持Currency类,只有这样才能使用Currency。

2 个答案:

答案 0 :(得分:3)

这可以让您以给定货币显示最接近的整个货币单位的金额。我没有对它进行测试,但认为它是95%正确。

double amount = ...;
String currencyCode = ...;
Currency currency = Currency.getInstance(currencyCode);
NumberFormat format = NumberFormat.getCurrencyInstance();
format.setMaximumFractionDigits(0);
format.setCurrency(currency);
String formattedAmount = format.format(amount);

答案 1 :(得分:2)

您是否尝试过以下代码:

    NumberFormat nf = NumberFormat.getCurrencyInstance();
    String currencyCode = "USD";
    nf.setCurrency(Currency.getInstance(currencyCode));
    double currencyAmmount = 4.00;
    String formattedValue= nf.format(currencyAmmount);

从上面的代码中我得到了$4.00,我认为这是你所期望的。

我想这里最重要的是使用NumberFormat.getCurrencyInstance()代替NumberFormat.getInstance()