1

他の double から計算された double の 2D 配列があります。2D 配列に格納されている double を、小数点以下 4 桁になるようにフォーマットする必要があります。たとえば、次の配列があります。

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);

これを実行した後、配列を出力しましたが、double はフォーマットされていません。

これを機能させ、フォーマットされた2D配列を保存するのを手伝ってくれる人はいますか?

ありがとう

4

1 に答える 1

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;
            }
        }

    }
于 2012-12-19T12:24:51.650 に答える