将货币格式化为区域设置特定格式

时间:2012-10-02 04:37:57

标签: java concurrency formatting currency-formatting

我希望能够将双倍价格格式化为特定于语言环境的格式。 您可以使用以下代码实现此目的:

NumberFormat.getCurrencyInstance(locale).format(20.0);

但是只支持21种语言环境,我需要支持的不仅仅是这些国家/地区。能够格式化ISO国家代码的价格将是很好的。 例如,给定ISO国家代码 CAN 我想将价格格式化为 $ 20.00 等。

java是否支持此功能?如果没有,那么可以实现这个开源版本(例如日期的joda时间)吗?

2 个答案:

答案 0 :(得分:2)

您可以根据所需的语言和国家/地区创建Locale。默认情况下,Java将这些语言环境中的一些作为常量,但它支持超过200个国家/地区:

Locale locale = new Locale("es", "pe"); //Spanish, Peru

更多信息:

答案 1 :(得分:0)

NumberFormat f = NumberFormat.getInstance(loc);
if (f instanceof DecimalFormat) {
    ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}

你试过DecimalFormat它有很多方法可以自定义输出请查看各种setMethods: http://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html#method.summary