Java (荷兰)地区的数字格式自定义更改

Java (荷兰)地区的数字格式自定义更改,java,locale,currency-formatting,Java,Locale,Currency Formatting,我有个问题。我处理应用程序中的金额,我需要本地化格式。我使用java.util.Locale的NumberFormat.getCurrencyInstance()。在大多数情况下,它看起来很好。但负数才是问题所在。荷兰nl语言环境的预定义格式如下所示 € 200,00- 但根据荷兰的标准,它应该是 € -200,00 示例是NumberFormat.getCurrencyInstance(新语言环境(“nl”、“nl”)).format(-200)。否则我不想改变格式 有什么想法吗?是的,很

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

€ 200,00-
但根据荷兰的标准,它应该是

€ -200,00
示例是
NumberFormat.getCurrencyInstance(新语言环境(“nl”、“nl”)).format(-200)
。否则我不想改变格式

有什么想法吗?

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

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

((DecimalFormat)NumberFormat.getCurrencyInstance(new Locale("NL", "nl"))).applyPattern("¤ #,##0.00;¤ -#").format(-200);
(您如何分解它,在哪里应用模式等当然取决于您现有的代码)

##,##0.00
是当前用于正值的默认荷兰模式,
#-#
是用于负值的新模式,这意味着“首先是货币符号,然后是不间断的空格(即
\u00a0
,不是常规SPC字符),然后是负数符号,然后是与正值相同的格式”(
在格式化字符串中分隔正值格式和负值格式)