d-b*_*d-b 6 java double parsing locale comma
我尝试使用以下代码使用瑞典语语言环境将字符串(-0,3)解析为java中的double:
String DoubleString = "-0,3"
NumberFormat swedishNumberFormat = NumberFormat.getInstance(new Locale("sv"));
System.out.println(swedishNumberFormat.parse(doubleString).doubleValue());
Run Code Online (Sandbox Code Playgroud)
当我尝试使用sv_SE
语言环境时,结果是-3.0,这显然是不正确的.然后,经过一段时间的头痛,将语言环境改为sv
(如上例所示),然后结果是正确的,-0,3.
根据http://www.localeplanet.com/java/sv/index.html和http://www.localeplanet.com/java/sv-SE/index.html,两种情况下的小数分隔符(Decimalavgränsare)都是逗号(,
)为什么这个区别?
(我尝试使用与瑞典相关的一些标签来标记这个,例如sv_SE,但我没有足够的声誉点来添加新标签.如果可以,请随意添加标签.)
如果你试图创建Locale
类似的new Locale("sv_SE")
,那么它将无法通过用于检测语言的ISO 639标准来匹配它(是的,如果只有一个参数它被威胁为语言,请查看文档).在您的情况下,您应该使用new Locale("sv","SE")
正确设置国家/地区,否则,由于语言匹配失败,使用默认语言(在您的情况下似乎是英语).在英语中,逗号用于数字分组而不是十进制标记,这就是您在意外但正确的结果.
归档时间: |
|
查看次数: |
5610 次 |
最近记录: |