有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从文本文件中添加值

大家好,我有一个文本文件,包含每行子字符串(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) 个答案

  1. # 1 楼答案

    或者,使用String.format格式化双精度值

    System.out.println (String.format("%1.2f", i));
    
  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)));
    }
    }