我想避免使用Locale,而是使用货币代码(ISO 4217,如“USD”)。我理解如何使用货币代码设置Currency类,但是,如何将此货币合并为一个NumberFormat以将双倍格式化为所述货币?
我同时理解NumberFormat和货币,但我如何将这些结合起来将双打格式化为真实货币字符串,例如4.00 - > $ 4.00?我必须使用NumberFormat,因为我在这个例子中删除小数位以产生诸如$ 4的整个货币数字。
感谢您的帮助, 莱恩
编辑:答案,.setCurrency,这是我在NumberFormat中没注意到的,doh!我过于专注于使用Currency构建NumberFormat,但是我很挣扎,因为你只能从Locale构造。希望我早些想到这个。谢谢!下次我将阅读更接近的方法列表。我KNEW NumberFormat HAD支持Currency类,只有这样才能使用Currency。答案 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()
。