在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();
}
}
}
您必须解析一个字符串以使其加倍。请记住,只有每行都有数字,下面的解决方案才会起作用。您应该添加验证、异常处理等
您可以通过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);