2014-10-11 119 views
0

Im製作從1-10的分割表結果範圍從整數到xx到x.xx我使用了十進制格式來保持數字到2位小數,但是拋出了格式桌子。我將如何打印號碼,這樣他們都將是X.XX如何格式化打印的雙打

for example 
1 -> 1.00 
0.5 -> 0.50 
0.333... -> 0.33 

DecimalFormat df = new DecimalFormat("#.##"); 
System.out.println("  1  2  3  4  5  6  7  8  9  10"); 
for(double i=1;i<=10;i++){ 
    System.out.print(df.format(i)+" "); 
    if (i<10) System.out.print(" "); 
    else System.out.print(""); 
    for(double j=1;j<=10;j++){ 
    double div=(j/i); 
    System.out.print(df.format(div)); 
    if (div < 10) System.out.print(" "); 
    } 
    System.out.println(); 

this prints 
    1  2  3  4  5  6  7  8  9  10 
1 1 2 3 4 5 6 7 8 9 10 
2 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 
3 0.33 0.67 1 1.33 1.67 2 2.33 2.67 3 3.33 
4 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 
5 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 
6 0.17 0.33 0.5 0.67 0.83 1 1.17 1.33 1.5 1.67 
7 0.14 0.29 0.43 0.57 0.71 0.86 1 1.14 1.29 1.43 
8 0.12 0.25 0.38 0.5 0.62 0.75 0.88 1 1.12 1.25 
9 0.11 0.22 0.33 0.44 0.56 0.67 0.78 0.89 1 1.11 
10 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 

i want to print everything as x.xx or neatly in columns 
1 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.0 
2 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00 4.50 5.00 
3 0.33 0.67 1.00 1.33 1.67 2.00 2.33 2.67 3.00 3.33 
etc 
+0

幽州。請解決這個問題。 – 2014-10-11 02:19:22

回答

0

方法很多,但一個是使用String.format("%.2f", myDouble)另一種方法是使用一個DecimalFormat如DecimalFormat format = new DecimalFormat("#0.00"),然後使用它像format.format(myDouble)

要格式化表格,請使用String.format(...)或其中一個變體,如printf。

例如

public class Foo2 { 
    private static final int COLS = 10; 
    private static final int ROWS = 10; 

    public static void main(String[] args) { 
     System.out.printf("%2s", ""); 
     for (int i = 0; i < COLS; i++) { 
     System.out.printf("%8d", (i + 1)); 
     } 
     System.out.println(); 
     for (int i = 0; i < ROWS; i++) { 
     int row = i + 1; 
     System.out.printf("%2d", row); 
     for (int j = 0; j < ROWS; j++) { 
      double myDouble = (double) row/(j + 1); 
      System.out.printf("%8.2f", myDouble); 
     } 
     System.out.println(); 
     } 
    } 
} 

打印出您所使用的DecimalFormat錯了,但不告訴我們你如何試圖使用它,也沒怎麼你的企圖沒有工作

  1  2  3  4  5  6  7  8  9  10 
1 1.00 0.50 0.33 0.25 0.20 0.17 0.14 0.13 0.11 0.10 
2 2.00 1.00 0.67 0.50 0.40 0.33 0.29 0.25 0.22 0.20 
3 3.00 1.50 1.00 0.75 0.60 0.50 0.43 0.38 0.33 0.30 
4 4.00 2.00 1.33 1.00 0.80 0.67 0.57 0.50 0.44 0.40 
5 5.00 2.50 1.67 1.25 1.00 0.83 0.71 0.63 0.56 0.50 
6 6.00 3.00 2.00 1.50 1.20 1.00 0.86 0.75 0.67 0.60 
7 7.00 3.50 2.33 1.75 1.40 1.17 1.00 0.88 0.78 0.70 
8 8.00 4.00 2.67 2.00 1.60 1.33 1.14 1.00 0.89 0.80 
9 9.00 4.50 3.00 2.25 1.80 1.50 1.29 1.13 1.00 0.90 
10 10.00 5.00 3.33 2.50 2.00 1.67 1.43 1.25 1.11 1.00 
+0

十進制格式(#0.00)將打印10作爲10.00而不是10.0我想要 – 2014-10-11 02:21:43

+0

@ Abe_23:不,你不想這樣做。小數點後面用兩位數字表示,而不是格式化輸出,以便數字排列。您尚未在原始問題中顯示您的輸出的當前狀態和**期望的輸出**,這是關鍵。 – 2014-10-11 02:28:53

+0

@ Abe_23:例如,請參閱編輯。' – 2014-10-11 02:36:37