gpt4 book ai didi

java - use the right number separator when using patterns to format currency?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:36 25 4
gpt4 key购买 nike

假设我有以下 <f:convertNumber>格式化货币类型的数字:

<f:convertNumber type="currency" locale="#{userSession.locale}" pattern="$###,###.###" />

在英语中,一百万是 1,000,000,但在德国,它应该是 1.000.000。我的问题是:如果我使用上述模式,JSF 会知道指定语言环境的数字格式并自动使用正确的分隔符吗?

如果没有,请告诉我如何格式化货币数字并同时指定正确的数字分隔符,我将不胜感激。

最佳答案

了解并理解 <f:convertNumber> 很重要标签使用 DecimalFormat 在幕后。您可以在 its javadoc 中找到所有模式字符.

您似乎期望 DecimalFormat图案字符,.实际上也用于最终格式。这是不真实的。它实际上只是模式字符(如 dMy 等,由 SimpleDateFormat 使用)。基本上,模式字符 ,告诉DecimalFormat打印给定语言环境指定的“分组分隔符”,以及等效的模式字符 .告诉DecimalFormat打印给定语言环境指定的“小数点分隔符”。

实际上,打印的实际字符取决于给定的语言环境。对于英语语言环境 ( locale="en" ),正在打印的“分组分隔符”恰巧也是 , , 但对于德语语言环境 ( locale="de" ) 正在打印的“分组分隔符”确实是 . .


与具体问题无关type <f:convertNumber> 的属性如果 pattern 完全没有效果指定了属性。 type attribtue 在此示例中基本上是多余的,可以安全地删除而没有任何副作用。

如果删除 pattern属性,那么它实际上会被使用,你会看到正在使用货币的默认模式,这与 ¤#,##0.00 相同用于英语语言环境和 ¤ #,##0.00对于德语语言环境。另请注意,表示货币符号的模式字符不是 $ ,但是¤ .货币符号可以通过currencySymbol单独设置属性。因此,货币的正确方法是:

<f:convertNumber type="currency" locale="#{userSession.locale}" currencySymbol="$" />

再次,请参阅 DecimalFormat之前链接的 javadoc。

关于java - <f :convertNumber> use the right number separator when using patterns to format currency?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com