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

时间:2011-03-08 17:28:27

标签: java formatting double

我目前使用以下代码打印双精度数据:

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

这很有效,除了Java使用我的Locale的小数分隔符(逗号),而我想使用一个点。有一个简单的方法吗?

7 个答案:

答案 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)

您可以使用NumberFormat和DecimalFormat。

从Java教程LocaleSpecific Formatting

中查看此链接

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

答案 5 :(得分:-1)

更改语言,对我有用。

如何设置eclipse控制台的语言环境/语言 How to set eclipse console locale/language

答案 6 :(得分:-3)

我遇到了同样的问题。.55.1转换为55,10。 我的快速解决方法是:

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