在使用模式格式化货币时,是否使用正确的数字分隔符?
假设我有以下来格式化货币类型号码:
在英语中,一百万将是1,000,000,但在德国,它应该是1,000,000。 我的问题是:如果我使用上面的模式,JSF会知道指定语言环境的数字格式并自动使用正确的分隔符吗?
如果没有,如果您能告诉我如何格式化货币编号并同时指定正确的数字分隔符,我将非常感激。
了解并理解
标记在封面下使用DecimalFormat
非常重要。 您可以在其javadoc中找到所有模式字符。
看来你期望的是DecimalFormat
模式字符,
和.
实际上也用于最终格式。 这是不真实的。 它实际上只是模式字符 (如SimpleDateFormat
使用的d
, M
, y
等)。 基本上,模式字符告诉DecimalFormat
打印由给定语言环境指定的“分组分隔符”,以及等效的模式字符.
告诉DecimalFormat
打印给定语言环境指定的“小数分隔符”。
在效果中,打印的实际字符取决于给定的区域设置。 对于英语语言环境( locale="en"
),正在打印的“分组分隔符”恰好也是,但是对于德语语言环境( locale="de"
),确实打印的“分组分隔符” .
。
与具体问题无关 ,如果指定了pattern
属性,
的type
属性完全没有效果。 在这个例子中, type
属性基本上是多余的,可以安全地删除,没有任何副作用。
如果你删除了pattern
属性,那么它实际上会被使用,你会看到正在使用货币的默认模式,这与英语语言环境的¤ #,##0.00
相同, ¤ #,##0.00
对于德国语言环境。 另请注意,表示货币符号的模式字符不是$
,而是¤
。 货币符号可以通过currencySymbol
属性单独设置。 所以货币的正确方法是:
再次,请看之前链接的DecimalFormat
javadoc。