2013-06-05 38 views
8

如果我有以下小數點的數字:顯示雙打時,我如何對齊小數點和浮動

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 

回答

8

的部分,其可以是有點混亂是String.format("4.3", number)

4表示整個數字(包括小數)的長度,而不僅僅是小數點前的部分。 3表示小數位數。

因此,要得到正確的格式與最多4位數字之前的小數點和3位小數位所需的格式實際上是String.format("%8.3f", number)

1

您可以編寫一個函數,在數字之前打印空格。

如果他們都將是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) 
2

這裏是另一種簡單的方法,用戶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); 
} 
+0

它實際上是'%8.3f',至少在我的電腦上。 – Djon

+0

這取決於輸出格式的長度,我認爲'123.344'的長度大約是7,這是您在printf格式中應該保留的最小值。 –

+0

我認爲第一個數字表示要使用的字符總數,但我不確定。 – Djon