ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 使用模式格式化货币时是否使用正确的数字分隔符?

2019-08-31 11:03:21  阅读:205  来源: 互联网

标签:java currency converter numbers jsf-2


假设我有以下< f:convertNumber>格式化货币类型编号:

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

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

如果没有,如果您能告诉我如何格式化货币编号并同时指定正确的数字分隔符,我将非常感激.

解决方法:

了解并了解< f:convertNumber>非常重要.标签使用DecimalFormat封面.您可以在its javadoc中找到所有模式字符.

看来你期望DecimalFormat模式字符,和.实际上也用于最终格式.这是不真实的.它实际上只是模式字符(如SimpleDateFormat使用的d,M,y等).基本上,模式字符告诉DecimalFormat打印由给定语言环境指定的“分组分隔符”,等效于模式字符.告诉DecimalFormat打印给定语言环境指定的“小数分隔符”.

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

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

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

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

再次,请看之前链接的DecimalFormat javadoc.

标签:java,currency,converter,numbers,jsf-2
来源: https://codeday.me/bug/20190831/1775230.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有