Java DecimalFormat在其他机器上不工作

Java DecimalFormat在其他机器上不工作,java,Java,我制作了一个java应用程序,其中我使用DecimalFormat对数字输出进行格式化 DecimalFormat df = new DecimalFormat("#.##"); return Double.parseDouble(df.format(costs)); 它在我的计算机上运行良好,但当该代码在另一台计算机上执行时, 我得到这个错误: Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatExcepti

我制作了一个java应用程序,其中我使用DecimalFormat对数字输出进行格式化

DecimalFormat df = new DecimalFormat("#.##");      
return Double.parseDouble(df.format(costs));
它在我的计算机上运行良好,但当该代码在另一台计算机上执行时, 我得到这个错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "25,1"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)

这两台机器都安装了最新的java版本,都是windows 7。一台机器是64位的,而另一台是32位的。错误仅发生在另一台机器上的原因是什么?

总而言之,语言环境。一台机器是欧洲格式的,
,另一台是美国/英国的,

编辑: 使用DecimalFormat对象向两个方向移动:
df.parse(…)
解析由
df.format
df.format(25.1)
根据默认或指定的区域设置返回格式化的数字
String

i、 e.对于
Locale.US
它将返回
String
25.1
,而对于
Locale.ITALY
它将返回
25,1
,因为这两个地区的十进制分隔符不同

另一个问题是您正在将格式化的
字符串
解析为
double
。如果您有
double
值(或其他有效数字),则不需要使用
DecimalFormat
格式化数字

如果您有有效的数字
字符串
25.1
),您可以用
分码器
按以下方式解析它

NumberFormat nf = NumberFormat.getNumberInstance(Locale.ITALY);
DecimalFormat df = (DecimalFormat) nf;
df.applyPattern("#.##");
try {
    System.out.println(df.parse("25,1"));
} catch (ParseException e) {
    e.printStackTrace();
}
输出

25.1

我添加到程序中,现在它首先为我们设置了区域设置,现在工作正常。机器上的区域设置确实不同。