2012-12-19 85 views
1

我有一個從其他雙打計算出來的雙打數組。我希望格式化存儲在二維數組中的雙精度數據,以使它們保留四位小數。比如我有一個數組:在2D陣列中格式化雙打

fragmentMases = [363.076328934]  [668.128613182]  [974.16124702]  [1303.232096646] 
       [283.109998526]  [588.162282774]  [894.194916612]  [1223.265766238] 
       [1398.2454009859998] [1053.1796367379998] [748.1273524899999] [442.0947186519999] 
       [1285.22153196]  [940.1557677119999] [635.103483464]  [329.070849626] 

但我希望它是:

fragmentMases = [363.0763] [668.1286] [974.1612] [1303.2320] 
       [283.1099] [588.1622] [894.1949] [1223.2657] 
       [1398.2454] [1053.1796] [748.1273] [442.0947] 
       [1285.2215] [940.1557] [635.1034] [329.0708] 

我已經作出,我認爲會做的功能,但它似乎並沒有保存它裏面數組:

public static void formatArray(double[][] array) { 

    Formatter fmt = new Formatter(); 

    for(int i = 0; i < 4; i++){ 
     for(int y = 0; y < array.length; y++){ 
      String.valueOf(array).length(); 
       fmt.format("%.4f", array[i][y]); 
     } 
    } 
} 

編輯

於是我運行以下命令:

formatArray(fragmentMasses); 

運行後,我打印出數組,並沒有雙打格式化。

任何人都可以幫助我得到這個工作,並保存格式化的2D數組?

感謝

+2

你沒有做任何數組與您的代碼。 – nhahtdh

回答

2

您可以創建新的數組,並用它覆蓋你:

public static double[][] formatArray(double[][] array) { 

    double[][] newArray = new double[array.length][array[0].length]; 
    for(int i = 0; i < array.length; i++){ 
     for(int y = 0; y < array[0].length; y++){ 
      newArray[i][y] = (double)Math.round(array[i][y] * 10000)/10000; 
     } 
    } 
    return newArray; 
} 

或者你可以改變自己的數組:

public static void formatArray(double[][] array) { 
     for(int i = 0; i < array.length; i++){ 
      for(int y = 0; y < array[0].length; y++){ 
       array[i][y] = (double)Math.round(array[i][y] * 10000)/10000; 
      } 
     } 

    } 
+0

這是完美的,正是我需要的。非常感謝你! – Primigenia