自定义更改(荷兰语)区域设置的NumberFormat

时间:2013-07-09 13:39:49

标签: java locale currency-formatting

我有问题。我在应用程序中使用金额,我需要本地化格式。我使用java.util.Locale的NumberFormat.getCurrencyInstance()。在大多数情况下,它看起来很好。但负数是问题所在。 Dutch nl-NL语言环境的预定义格式如下所示

€ 200,00-

但根据荷兰的标准,它应该是

€ -200,00

示例是NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).format(-200)。我不想改变格式。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

是的,this很好地解释了这个问题(Java使用的CLDR与荷兰语官方推荐之间的差异)。

要使用与CLDR不同的格式,您必须自己定义,使用正值的默认格式和负数的不同格式:

((DecimalFormat)NumberFormat.getCurrencyInstance(new Locale("NL", "nl"))).applyPattern("¤ #,##0.00;¤ -#").format(-200);

(你如何分解这个,你应用模式的地方等当然会取决于你现有的代码)

¤ #,##0.00是正值的当前默认荷兰模式,¤ -#是负值的新模式,这意味着首先是货币符号,然后是不间断的空格(即\u00a0 ,而不是常规SPC字符),然后是负符号,然后格式为正值“(;将正值格式与格式化字符串中的负值格式分开。”