0

各行の部分文字列 (34, 47) に金額を含むテキスト ファイルがあります。ファイルの最後まですべての値を合計する必要があります。ビルドを開始したこのコードがありますが、ここから先に進む方法がわかりません:

public class Addup {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws FileNotFoundException, IOException {
    // TODO code application logic here
    FileInputStream fs = new FileInputStream("C:/Analysis/RL004.TXT");
    BufferedReader br = new BufferedReader(new InputStreamReader(fs));
    String line;
    while((line = br.readLine()) != null){
        String num = line.substring(34, 47);

        double i = Double.parseDouble(num);
        System.out.println(i);
    }
}
}

出力は次のようになります。

1.44576457E4
2.33434354E6
4.56875685E3

金額は小数点以下 2 桁で、結果も小数点以下 2 桁が必要です。これを達成するための最良の方法は何ですか?

4

2 に答える 2

2

DecimalFormat使用するのに最適なオプションです:

double roundTwoDecimals(double d) {
            DecimalFormat twoDForm = new DecimalFormat("#.##");
        return Double.valueOf(twoDForm.format(d));
}

コードを次のように変更できます。

public static void main(String[] args) throws FileNotFoundException, IOException {
    // TODO code application logic here
    double sum = 0.0;
    FileInputStream fs = new FileInputStream("C:/Analysis/RL004.TXT");
    BufferedReader br = new BufferedReader(new InputStreamReader(fs));
    String line;
    while((line = br.readLine()) != null){
        String num = line.substring(34, 47);

        double i = Double.parseDouble(num);
        sum = sum + i;
        DecimalFormat twoDForm = new DecimalFormat("#.##");
        System.out.println(Double.valueOf(twoDForm.format(i)));
    }
        System.out.println("SUM = " + Double.valueOf(twoDForm.format(sum)));
}
}
于 2012-07-10T09:12:32.200 に答える
1

または、String.formatdouble 値をフォーマットするために使用します。

System.out.println (String.format("%1.2f", i));
于 2012-07-10T09:16:37.367 に答える