我目前使用以下代码打印双精度数据:
return String.format("%.2f", someDouble);
这很有效,除了Java使用我的Locale的小数分隔符(逗号),而我想使用一个点。有一个简单的方法吗?
答案 0 :(得分:150)
使用String.format
的重载来指定语言环境:
return String.format(Locale.ROOT, "%.2f", someDouble);
如果您仅格式化数字 - 就像您在这里一样 - 那么使用NumberFormat
可能更合适。但是,如果您需要String.format
的其余格式化功能,这应该可以正常工作。
答案 1 :(得分:18)
更激进的解决方案是在main()中尽早设置您的Locale。
像:
Locale.setDefault(new Locale("en", "US"));
答案 2 :(得分:10)
您可以将其他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。
答案 3 :(得分:7)
方式为时已晚,但正如此处提到的其他内容是NumberFormat
(及其子类DecimalFormat
)的示例用法
public static String format(double num) {
DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
decimalSymbols.setDecimalSeparator('.');
return new DecimalFormat("0.00", decimalSymbols).format(num);
}
答案 4 :(得分:0)
答案 5 :(得分:-1)
更改语言,对我有用。
如何设置eclipse控制台的语言环境/语言 How to set eclipse console locale/language
答案 6 :(得分:-3)
我遇到了同样的问题。.55.1
转换为55,10
。
我的快速解决方法是:
String.format("%.2f", value).replaceAll(",",".");