3

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

€ 200,00-

但按照荷兰的标准,应该是

€ -200,00

例子是NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).format(-200)。否则我不想更改格式。

有任何想法吗?

4

1 回答 1

4

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

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

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

(你如何分解它,你在哪里应用模式等当然取决于你现有的代码)

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

于 2014-07-10T09:00:43.723 回答