String.Format() 的 DecimalSeparator 问题

DecimalSeparator issue with String.Format()

请在下面找到我的代码:

double value = (double)-16325.62015;
System.out.println(String.format("%s", value));//-16325.62015
System.out.println(String.format(new Locale("de", "DE"), "%s", value));//-16325.62015
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(new Locale("de", "DE"));
System.out.println(dfs.getDecimalSeparator());//,

在上面的代码中,我得到了错误的德语语言环境小数点分隔符。

我也试过下面的代码,但它产生 -16325,6

double value = (double)-16325.62015;
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(new Locale("de", "DE"));
DecimalFormat df = new DecimalFormat("#.#", dfs ); 
System.out.println(df.format(value));

有没有其他方法可以将输出打印为 -16325,62015

注意:我想为任何特定语言环境打印带 n 个小数位的双精度值

提前致谢

您必须使用 %f 而不是 %s。使用 %s 时,Java 使用 String.valueOf 将您的值转换为字符串,后者使用默认语言环境。

double value = (double)-16325.62015;
System.out.println(String.format("%f", value));
System.out.println(String.format(Locale.GERMANY, "%f", value));