在Java中打印固定大小的双精度数

时间:2014-02-05 23:26:58

标签: java

我有一个矩阵如下(例如):

1 2
1000000000000 3.15

我希望以适当的方式将其打印成字符串,每个条目恰好占用8个位置:

1.000000    2.000000
1.00e006    3.150000

我一直在研究DecimalFormat,NumberFormat,并想出了一种用自己编码的特定函数来实现它的方法,但是当使用十进制表示法编写数字时它会失败。 无论如何编写(常规或科学记法),任何方法都可以将双精度打印到占用指定数量空格的字符串中?

1 个答案:

答案 0 :(得分:1)

为什么不呢?如果需要,您可以使用正则表达式删除符号。这可能需要更多的工作。

public static String formatScientific(double val) {
    // Default case.
    String out = String.format("%1.6f", val);

    // Use scientific notation on values greater than 10. 
    if (val >= 10)
        out = String.format("%1.2e", val).replaceAll("\\+", "").concat("0");

    return out;
}

输出:

1.000000
2.000000
1.00e120
3.150000

修改:我应该检查val >= 10,而不是val >= 10^2 oops ...