力点(“ .”)在 java 中的小数点

我目前使用下面的代码来打印一个双精度:

return String.format("%.2f", someDouble);

这很好用,除了 Java 使用语言环境的小数点(逗号) ,而我想使用一个点。有什么简单的方法吗?

110774 次浏览

使用 String.format的重载,它允许您指定区域设置:

return String.format(Locale.ROOT, "%.2f", someDouble);

如果您使用的是 只有格式化数字,那么使用 NumberFormat可能更合适。但是,如果您需要 String.format的其他格式化功能,那么这样做应该没问题。

可以使用 NumberFormat 和 DecimalFormat。

请看 Java 教程 区域特定格式中的这个链接

标题为区域设置敏感格式的部分正是您所需要的。

您可以向 java.lang. String.format 以及 java.io. PrintStream.printf (例如 System.out.printf ())传递额外的语言环境:

import java.util.Locale;


public class PrintfLocales {


public static void main(String args[]) {
System.out.printf("%.2f: Default locale\n", 3.1415926535);
System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535);
System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535);
}


}

结果如下(在我的电脑上) :

$ java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

请参见 JavaAPI 中的 格式

一个更激进的解决方案是在 main ()中尽早设置语言环境。

比如:

Locale.setDefault(new Locale("en", "US"));

为时已晚,但正如其他在这里提到的是 NumberFormat(及其子类 DecimalFormat)的示例用法

public static String format(double num) {
DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
decimalSymbols.setDecimalSeparator('.');
return new DecimalFormat("0.00", decimalSymbols).format(num);
}

我有同样的问题. . 55.1转换成 55,10。 我的快速(肮脏?)解决方法是:

String.format("%.2f", value).replaceAll(",",".");

改变语言,对我很管用。

如何设置 Eclipse 控制台区域设置/语言 如何设置 Eclipse 控制台区域设置/语言