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));
请在下面找到我的代码:
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));