在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的部分就是你所需要的。