显示双精度和浮点数时如何对齐小数点

如果我有以下小数点数:

Double[] numbers = new Double[] {1.1233, 12.4231414, 0.123, 123.3444, 1.1}; for (Double number : numbers) { System.out.println(String.format("%4.3f", number)); } 

然后我得到以下输出:

 1.123 12.423 0.123 123.344 1.100 

我想要的是:

  1.123 12.423 0.123 123.344 1.100 

可能有点混乱的部分是String.format("4.3", number)

4代表整数的长度(包括小数),而不仅仅是小数前面的部分。 3表示小数位数。

因此,为了使格式正确,在十进制之前最多4个数字和3个小数位,所需的格式实际上是String.format("%8.3f", number)

您可以编写一个在数字前打印空格的函数。

如果它们都是4.3f ,我们可以假设每个数字最多需要8个字符,所以我们可以这样做:

 public static String printDouble(Double number) { String numberString = String.format("%4.3f", number); int empty = 8 - numberString.length(); String emptyString = new String(new char[empty]).replace('\0', ' '); return (emptyString + numberString); } 

输入:

 public static void main(String[] args) { System.out.println(printDouble(1.123)); System.out.println(printDouble(12.423)); System.out.println(printDouble(0.123)); System.out.println(printDouble(123.344)); System.out.println(printDouble(1.100)); } 

输出:

 run: 1,123 12,423 0,123 123,344 1,100 BUILD SUCCESSFUL (total time: 0 seconds) 

这是另一个简单的方法,用户System.out.printf();

 Double[] numbers = new Double[]{1.1233, 12.4231414, 0.123, 123.3444, 1.1}; for (Double number : numbers) { System.out.printf("%7.3f\n", number); }