在C#中具有两个小数点的平均值和格式

本文关键字:小数点 两个 平均值 格式 | 更新日期: 2023-09-27 18:29:45

编写一个C#程序从文本文件中检索值,并打印值的平均值,格式为小数点后两位。

因此,我已经编码并创建了一个名为"averages.txt"的文本文件,文件中有4个数字,我的程序已经在文本文件中检索数据并输出值。

我遇到的问题是,我需要找到文件中4个数字的平均值,然后将这些数字格式化为小数点后2位。

我的代码:

    static void Main(string[] args)
    {
        string innerNum;
        string outerNum = "";
        if (File.Exists("averages.txt"))
        {
            try
            {
                StreamReader inFile = new StreamReader("averages.txt");
                while ((innerNum = inFile.ReadLine()) != null)
                {
                    outerNum += innerNum + "'n";
                }
                Console.WriteLine(outerNum);

            }
            catch (System.IO.IOException e)
            {
                Console.WriteLine("IO Exception: " + e.Message);
            }
        }
            else
            {
                Console.WriteLine("The File Does Not Exist.");
            }
        Console.Write("Press Enter to Exit.");
        Console.ReadKey();
    }
}

}

在C#中具有两个小数点的平均值和格式

您必须解析一个字符串以使其加倍。请记住,只有每行都有数字,下面的解决方案才会起作用。您应该添加验证、异常处理等

您可以通过String.Format("{0:N2}",…)输出小数点后2位的数字。http://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

static void Main(string[] args) {
    string innerNum;
    string outerNum = "";
    double sum = 0;
    int count = 0;
    if (File.Exists("averages.txt")) {
        try {
            StreamReader inFile = new StreamReader("averages.txt");
            while ((innerNum = inFile.ReadLine()) != null) {
                try {
                    outerNum += innerNum + "'n";
                    sum += double.Parse(innerNum);
                    count++;
                } catch(Exception e) {}
            }
            Console.WriteLine(outerNum);
        } catch (System.IO.IOException e) {
            Console.WriteLine("IO Exception: " + e.Message);
        }
    }  else {
        Console.WriteLine("The File Does Not Exist.");
    }
    Console.WriteLine("Average is : " + String.Format("{0:N2}",sum/(double)count));
    Console.Write("Press Enter to Exit.");
    Console.ReadKey();
}

我回答这个问题时假设这是一个家庭作业,你的教授不会接受这个Linq解决方案作为答案。

var avg = File.ReadAllText("averages.txt")
              .Split(" 't'r'n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
              .Average(x => double.Parse(x, CultureInfo.InvariantCulture));
Console.WriteLine("AVG: {0:0.00}", avg);