use*_*354 7 gwt number-formatting
在GWT的NumberFormat类(http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/i18n/client/NumberFormat.html)的文档中,我读到:
"用于无穷大,数字,千位分隔符,小数分隔符等的前缀,后缀和各种符号可以设置为任意值,并且在格式化期间它们将正确显示.但是,必须注意符号和字符串执行不冲突,或解析将是不可靠的.例如,小数分隔符和千位分隔符应该是不同的字符,否则解析是不可能的."
我的问题是,我如何确保"." 用作千位分隔符和","作为小数分隔符独立于用户的语言环境设置?在当我使用模式"###,###,###.######"我想GWT的双重价值1234567.89格式化换句话说始终为"1.234.567,89"无论什么用户的语言环境是.
解决这个问题需要一些工作。从NumberFormatter 的文档和源代码来看,似乎只能使用 Locales 来设置这些值。他们确实说您可以设置组分隔符,但没有这样的例子对我有用。虽然您可能认为在底层执行此操作的 Java 方法会起作用,因为 GWT 模拟 DecimalFormat和DecimalFormalSymbols类,但它们并不正式支持它们。也许他们将来会。此外,他们在LocaleInfo 类中说您可以修改区域设置,我发现没有这样的方法允许这样做。
所以,这里是Hack 的方法:
NumberFormat.getFormat("#,##0.0#").format(2342442.23d).replace(",", "@");
Run Code Online (Sandbox Code Playgroud)
正确的方法,但尚未支持 GWT:
使用十进制格式化程序:
// formatter
DecimalFormat format= new DecimalFormat();
// custom symbol
DecimalFormatSymbols customSymbols=new DecimalFormatSymbols();
customSymbols.setGroupingSeparator('@');
format.setDecimalFormatSymbols(customSymbols);
// test
String formattedString = format.format(2342442.23d);
Run Code Online (Sandbox Code Playgroud)
输出:
2@342@442.23
| 归档时间: |
|
| 查看次数: |
11651 次 |
| 最近记录: |