我有问题。我在应用程序中使用金额,我需要本地化格式。我使用java.util.Locale的NumberFormat.getCurrencyInstance()
。在大多数情况下,它看起来很好。但负数是问题所在。 Dutch nl-NL语言环境的预定义格式如下所示
€ 200,00-
但根据荷兰的标准,它应该是
€ -200,00
示例是NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).format(-200)
。我不想改变格式。
有什么想法吗?
答案 0 :(得分:2)
是的,this很好地解释了这个问题(Java使用的CLDR与荷兰语官方推荐之间的差异)。
要使用与CLDR不同的格式,您必须自己定义,使用正值的默认格式和负数的不同格式:
((DecimalFormat)NumberFormat.getCurrencyInstance(new Locale("NL", "nl"))).applyPattern("¤ #,##0.00;¤ -#").format(-200);
(你如何分解这个,你应用模式的地方等当然会取决于你现有的代码)
¤ #,##0.00
是正值的当前默认荷兰模式,¤ -#
是负值的新模式,这意味着首先是货币符号,然后是不间断的空格(即\u00a0
,而不是常规SPC字符),然后是负符号,然后格式为正值“(;
将正值格式与格式化字符串中的负值格式分开。”