Java の DecimalFormatter を異なるロケールで使用すると、奇妙な動作が見られます。数値が値 1,255,000,000 (デバッガーでは 1.255E9 と表示されます) を持つ double の場合、Locale を使用して DecimalFormatter に渡します。
ロケールが 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%>">