2014-10-08 32 views
5

我想一个字符串(-0,3)解析为双在使用使用此代码瑞典语言环境的Java:Java:sv和sv_SE语言环境有什么区别?

String DoubleString = "-0,3" 
NumberFormat swedishNumberFormat = NumberFormat.getInstance(new Locale("sv")); 
System.out.println(swedishNumberFormat.parse(doubleString).doubleValue()); 

当我与sv_SE区域尝试的结果是-3.0,这很明显,是不正确的。然后,我很多头痛改变语言环境为sv(如上例),然后结果是正确的,-0,3。

根据http://www.localeplanet.com/java/sv/index.htmlhttp://www.localeplanet.com/java/sv-SE/index.html在这两种情况下的小数点分隔符(Decimalavgränsare)是逗号(,)那么,为什么这种差异?

(我试图与有关瑞典的一些标签如sv_SE标记,但我没有足够的信誉分,加入新的标签。随意,如果你能添加标签。)

回答

6

如果你尝试要创建Localenew Locale("sv_SE"),那么它将无法通过用于检测语言的ISO 639标准(是的,如果只有一个参数作为语言受到威胁,请检查文档)。在你的情况下,你应该使用new Locale("sv","SE")正确设置国家,否则,由于语言匹配失败,使用默认语言(在你的情况下,这似乎是英语)。在英语中,逗号用于数字分组而不是小数点,这就是为什么你的结果出人意料但却是正确的。

相关问题