1

現在、この配列の出力の小数点以下の桁数が大きすぎます。これを小数点以下2桁に制限するにはどうすればよいですか? これは、配列「percentage1」を意味します。オンラインで実行する方法を見てきましたが、以下に示すように、これらの方法をコードに実装する方法がわかりません。

int[] correct1 = {20, 20, 13, 15, 22, 18, 19, 21, 23, 25};
int[] incorrect1 = {2, 1, 5, 2, 2, 5, 8, 1, 0, 0};

    double[] percentage1 = new double[correct1.length];
    for(int a = 0; a < correct1.length; a++ ){ 
             percentage1[a] = (((double)correct1[a] / (correct1[a] + incorrect1[a]))*100);
        }

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

3

DecimalFormatオブジェクトを追加してみてください。

  1. これをループの先頭に追加すると、探している形式が宣言されます-小数点以下2桁:DecimalFormat df = new DecimalFormat("#.##");

  2. を使用してフォーマットしてformatから、double に変換し直します。元に戻す必要があるformatのは、文字列を返すためです。

    パーセンテージ1[a] = Double.valueOf(df.format((((double)correct1[a] / (correct1[a] + wrong1[a]))*100)));

以下の修正されたコードを参照してください。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] correct1 = {20, 20, 13, 15, 22, 18, 19, 21, 23, 25};
    int[] incorrect1 = {2, 1, 5, 2, 2, 5, 8, 1, 0, 0};

        double[] percentage1 = new double[correct1.length];
        DecimalFormat df = new DecimalFormat("#.##");
        for(int a = 0; a < correct1.length; a++ ){ 
                 percentage1[a] = Double.valueOf(df.format((((double)correct1[a] / (correct1[a] + incorrect1[a]))*100)));
                 System.out.println(percentage1[a]);
            }

}

サンプル結果:

90.91
95.24
72.22
88.24
91.67
78.26
70.37
95.45
100.0
100.0
于 2013-04-24T01:04:01.787 に答える