如何使用StreamReader读取double值?

问题描述 投票:-1回答:2

我正在尝试从txt文件读入数组。我把所有内容写成整数读取,但是我误读了信息并且还需要能够计算小数。如何更改下面的代码以允许小数?

我是C#的新手,但我无法弄清楚这一点。如果我只是将int切换为double,我会收到错误“无法将int类型隐式转换为double”。

            StreamReader ifile;
            ifile = File.OpenText("sales.txt");
            int count = 0;
            string str = "";
            //Populating the array
            while (ifile.EndOfStream == false)
            {
                str = ifile.ReadLine();
                list[count] = decimal.Parse(str);
                count++;
            }
            // Display the contents of the array
            foreach (decimal val in list)
            {
                listBoxSales.Items.Add(val);
            }

            int Average;
            Average = average(list);
            labelAvgsales.Text = Average.ToString();

我只需要将数字拉入数组列表。上面的代码用于提取整数,但是当列表中的整数表示“输入字符串格式不正确”时,显然会失败。

更新:小数不再使用上面的代码错误输出。第二部分我希望自己弄清楚是从数组调用信息。

以下工作,但在切换到允许小数后,它会出错。我尝试在下面将int切换为十进制,但我不确定我做错了什么。

private int average(int[] numList)
        {
            int avg;
            int total = 0;
            for (int i = 0; i < numList.Length; i++)
            {
                total += numList[i];
            }
            avg = total / numList.Length;
            return avg;
        }
c#
2个回答
1
投票

使用decimal.Parse

    var x = "1";
    var y = "1.1";
    Console.WriteLine(decimal.Parse(x));
    Console.WriteLine(decimal.Parse(y));

这是一个dotnetfiddle显示如何做到这一点:https://dotnetfiddle.net/mUB8iz


0
投票

C#是类型安全的编程语言,

您可以使用ArrayList类不是类型安全的,因为它可以存储任何对象,这意味着您可以执行以下操作:

 var integers = new  ArrayList();
 while (ifile.EndOfStream == false)
 {
 str = ifile.ReadLine();
 integers.Add(decimal.Parse(str));
 }

并按如下方式进行。

© www.soinside.com 2019 - 2024. All rights reserved.