不同的行爲我看到奇怪的行爲,當我使用Java的DecimalFormatter與不同的區域設置。如果數字是1,255,000,000的值(在調試器中顯示爲1.255E9),那麼我將它傳遞給帶有Locale的DecimalFormatter。Java DecimalFormatter - 區域設置DE和區域設置US
如果語言環境設置爲de | DE,它會將該數字轉換爲1.255E13。
如果區域設置設置爲en | US,則會將數字(正確)轉換爲1.255E9。
爲什麼德語區域設置做錯了?
這裏是我的代碼...
// number comes from JSP
// usually in form of "1.255E9"
String text = request.parameter("number");
NumberFormat numFormatter = NumberFormat.getInstance(formatLocale);
DecimalFormat formatter = (DecimalFormatter)numFormatter;
formatter.applyPattern("#,###");
return formatter.parse(text.trim()).doubleValue();
**編輯爲了更清楚**
字符串獲取傳遞到服務器端代碼是完全按照我列出上面,「1.255E9 」。在JSP頁面中,我只是在做類似HTML的
<input type="hidden" name="number" value="<%=price%>">
請問您可以發佈一個可重複使用的小例子嗎? –
你正在使用什麼'DecimalFormatter'方法?我想我會期望一個'ParseException'或者「1.255」,這取決於方法,因爲在DE中,「,」是一個小數點,並且你不希望數字中有兩個小數點。 (新的Locale(「DE」))。parse(「1,255,000,000」)'返回'1.255',如預期的那樣,因爲'','== NumberFormat.getInstance(new Locale(「DE 「))。getDecimalFormatSymbols()。getDecimalSeparator()'。) – Jeremy