2014-10-08 82 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")正確設置國家,否則,由於語言匹配失敗,使用默認語言(在你的情況下,這似乎是英語)。在英語中,逗號用於數字分組而不是小數點,這就是爲什麼你的結果出人意料但卻是正確的。

相關問題