如何从货币代码获取NumberFormat实例?


问题内容

如何获得与ISO 4217货币代码(例如“ EUR”或“
USD”)相对应的NumberFormat(或DecimalFormat)实例,以便正确设置价格格式?

注意1: 我遇到的问题是NumberFormat/ DecimalFormat类有一个
getCurrencyInstance(Locale locale)方法,但是我不知道如何Locale从ISO 4217货币代码获取对象。

注意2: 还有一个java.util.Currency类具有一个getInstance(String currencyCode)方法(Currency 为给定的ISO
4217货币代码返回实例),但是我仍然无法弄清楚如何从Currency对象到NumberFormat 实例。


问题答案:

我不确定我是否理解正确,但是您可以尝试执行以下操作:

public class CurrencyTest
{
    @Test
    public void testGetNumberFormatForCurrencyCode()
    {
        NumberFormat format = NumberFormat.getInstance();
        format.setMaximumFractionDigits(2);
        Currency currency = Currency.getInstance("USD");
        format.setCurrency(currency);

        System.out.println(format.format(1234.23434));
    }   
}

输出:

1,234.23

请注意,我分别设置了小数位数的最大数量,NumberFormat.setCurrency并没有达到小数位数的最大数量:

设置格式化货币值时此数字格式使用的货币。这不会更新数字格式使用的最小或最大小数位数。