当我将 Java 的 DecimalFormatter 与不同的语言环境一起使用时,我看到了奇怪的行为。如果该数字是双精度值,值为 1,255,000,000(在调试器中显示为 1.255E9),我将其传递给具有区域设置的 DecimalFormatter。
如果 Locale 设置为 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%>">