6

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

我分别理解 NumberFormat 和 Currency,但是如何将它们组合起来以将双精度值格式化为真正的货币字符串,例如 4.00 -> $4.00?我必须使用 NumberFormat,因为我去掉了小数位以生成整个货币数字,例如本例中的 $4。

谢谢你的帮助,瑞恩

编辑:回答,.setCurrency,这是我在 NumberFormat 中没有注意到的,doh!我太专注于用货币构造 NumberFormat,但我很挣扎,因为你只能从 Locale 构造。希望我早点想到这一点。谢谢!下次我会更仔细地阅读列出的方法。我知道 NumberFormat 必须支持 Currency 类,只有以这种方式使用 Currency 才有意义。

4

2 回答 2

4

这应该使您可以将给定货币的金额显示为最接近的完整货币单位。我还没有测试过,但认为它是 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);
于 2012-11-01T18:18:24.697 回答
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().

于 2012-11-01T18:28:08.530 回答