在Java中强制点(“。”)作为小数点分隔符

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

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

这很好,除了Java使用我的语言环境的小数点分隔符(逗号),而我想使用一个点。 是否有捷径可寻?

使用String.format的重载,它可以让你指定语言环境:

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

如果你只是格式化数字 – 就像你在这里 – 然后使用NumberFormat可能会更合适。 但是如果你需要String.format的格式化function的其余部分,这应该很好。

更激进的解决scheme是在main()中尽早设置你的Locale。

喜欢:

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

您可以将其他Locale传递给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 

请参阅Java API中的String.format 。

方式太晚,但正如其他提到这里是NumberFormat (及其子类DecimalFormat )的示例用法,

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

您可以使用NumberFormat和DecimalFormat。

看看这个从Java教程区域设置特定格式的链接

标题为Locale-Sensitive Formatting的部分就是你所需要的。