Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT-在默认区域设置中格式化数字,而不考虑所选区域设置_Java_Gwt_Internationalization - Fatal编程技术网

Java GWT-在默认区域设置中格式化数字,而不考虑所选区域设置

Java GWT-在默认区域设置中格式化数字,而不考虑所选区域设置,java,gwt,internationalization,Java,Gwt,Internationalization,我正在尝试使用GWT的NumberFormat格式化和解析数字,但我希望使用默认格式(例如EN语言环境),而不管用户选择的语言环境如何,因此用户可以选择任何语言,但我希望使用默认格式(例如1234.89)显示和解析数字 有办法做到这一点吗 编辑: 例如,此代码仅在EN语言环境下有效,在RU中我获得NumberFormatException NumberFormat format = NumberFormat.getFormat("#,##0.00"); String n = "1,234.89"

我正在尝试使用GWT的NumberFormat格式化和解析数字,但我希望使用默认格式(例如EN语言环境),而不管用户选择的语言环境如何,因此用户可以选择任何语言,但我希望使用默认格式(例如1234.89)显示和解析数字

有办法做到这一点吗

编辑:

例如,此代码仅在EN语言环境下有效,在RU中我获得NumberFormatException

NumberFormat format = NumberFormat.getFormat("#,##0.00");
String n = "1,234.89"; 
double value = format.parse(n);
//do something with value...

我需要获取locale EN的NumberFormat实例,但我在javadocs中找不到任何可以这样做的方法/构造函数。

我知道您应该使用的编号是
NumberFormat.format
,而不是
NumberFormat.parse

NumberFormat format = NumberFormat.getFormat("#,##0.00");
Double n = 1234.89;
RootPanel.get().add(new HTML("Number: " + format.format(n)));
如果您已经有了数字的格式化字符串表示形式,则不需要
NumberFormat

String n = "1,234.89"; 
RootPanel.get().add(new HTML("Number: " + n));

NumberFormat
始终解析本地化文本。它使用的
NumberConstants
是根据当前语言环境通过延迟绑定实例化的。不幸的是,您不能强制使用其他
NumberConstants

但是您知道默认的分组分隔符(
)和十进制分隔符(
)。还可以获取当前区域设置的分组和小数分隔符。因此,您只需要在解析之前替换它们

String n = "1,234.89";
n = n.replace(",", LocaleInfo.getCurrentLocale().getNumberConstants().groupingSeparator());
n = n.replace(".", LocaleInfo.getCurrentLocale().getNumberConstants().decimalSeparator());
double value = format.parse(n);
这应该适用于任何语言环境


要使用默认语言环境格式化数字,只需在当前语言环境中格式化后进行相反的替换。

请说明您现在是如何进行格式化的,以及您已经尝试过的内容。这只是一个示例,我需要数字的双值来操作它。我已经编辑了我的帖子。我刚刚深入研究了
NumberFormat
代码,它告诉我们,通过在
NumberFormat
结构中设置
NumberConstants
可以实现您想要的。但这是不可能的
NumberFormat
构造函数受保护,在创建后无法指定固定的
NumberConstants
(除了对您不有用的
setForcedLatinDigits
)。因此,除非你想进行大规模的黑客攻击,否则我认为不可能使用
NumberFormat
来做你想做的事情。也许我错了,也许其他人看到了。。。