C#怎么计算一列数组的平均值,这是我程序,求大神帮忙看一下,哪里有问题。

louguanghai 2015-05-12 05:09:37
我的数组中的数据是从dataGridView1控件中来的,数组就1列,数组中的数据都是3.35,3.54,3.56.....这样的。然后想把这个数据求一下平均值,然后显示到textBox2控件上去。

string[] sample = new string[dataGridView1.Rows.Count];
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sample[i] = dataGridView1.Rows[i].Cells[0].ToString();
}

//计算平均值
float sum = 0f, max = 0f, min = 0f;
int num = 100;

for (int i = 0; i < num;i ++)
{
sum += sample[i]; //这句话显示有问题
}
textBox2.Text = (sum / num).ToString();
...全文
1847 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
suiyuezhang 2016-12-17
  • 打赏
  • 举报
回复
double[] sample = new double[dataGridView1.Rows.Count];
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()); //这里显示未将对象引用设置到对象的实例,请问该怎么修改
}

var avg = sample.Average();

this.textBox2.Text = avg.ToString();
lshfong 2016-06-18
  • 打赏
  • 举报
回复
数组相加后,除以数组长度
qq_33435631 2016-06-18
  • 打赏
  • 举报
回复
public static void avg日报(string tagname) { DateTime start1=Convert.ToDateTime(GrpManager.日报表.日历5.Text +" "+"00:00:00");//控件 DateTime end1=Convert.ToDateTime(GrpManager.日报表.日历5.Text +" "+"01:00:00"); string sql1=string.Format("select max(TagValue) from "+tagname+" where TagChangeTime >'{0}' and TagChangeTime <'{1}'",start1,end1); AVG.avg1=Defined.avg(sql1); } 我这里是工程上用的一条c# 出来的数就是平均值 我现在想要一个最大值 应该怎么改?
本拉灯 2015-05-13
  • 打赏
  • 举报
回复
sample.Select(o => double.Parse(o)).Average(); 一句搞定
渃水 2015-05-13
  • 打赏
  • 举报
回复
引用 14 楼 wyd1520 的回复:
sample.Select(o => double.Parse(o)).Average(); 一句搞定
正解,有直接求平均值的方法啊
  • 打赏
  • 举报
回复
this.TextBox2.Text=avg;
this.TextBox3.Text=max;
this.TextBox4.Text=min;
接上面的代码……虽说初学,但这个还是要懂的啊
louguanghai 2015-05-12
  • 打赏
  • 举报
回复
引用 11 楼 starfd 的回复:
double[] sample = new double[dataGridView1.Rows.Count];
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString());
            }
  
var avg = sample.Average();
var min = sample.Min();
var max = sample.Max();
非常感谢!!! 我还有一个问题: 我想把平均值avg的值显示到textBox2控件上去,最大值max的值显示到textBox3控件上去,最小值min的值显示到textBox4控件上去,怎么写代码?
  • 打赏
  • 举报
回复
double[] sample = new double[dataGridView1.Rows.Count];
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString());
            }
  
var avg = sample.Average();
var min = sample.Min();
var max = sample.Max();
louguanghai 2015-05-12
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
double[] sample = new double[dataGridView1.Rows.Count];
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value);
}

var avg = sample.Sum()/sample.Length;
var min = sample.Min();
var max = sample.Max();

抄你的代码部分没改……

还有一句话无法调试呢~~~:
  • 打赏
  • 举报
回复
double[] sample = new double[dataGridView1.Rows.Count];
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value);
            }
 
var avg = sample.Sum()/sample.Length;
var min = sample.Min();
var max = sample.Max();
抄你的代码部分没改……
louguanghai 2015-05-12
  • 打赏
  • 举报
回复
引用 6 楼 starfd 的回复:
 double[] sample = new string[dataGridView1.Rows.Count];
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value);
}

var avg = sample.Sum()/sample.Length;
var min = sample.Min();
var max = sample.Max();

大神我调用了你的程序,发现没法用:
  • 打赏
  • 举报
回复
var avg = sample.Average();
上面多此一举了
  • 打赏
  • 举报
回复
 double[] sample = new string[dataGridView1.Rows.Count];
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                sample[i] = double.Parse(dataGridView1.Rows[i].Cells[0].Value);
            }

var avg = sample.Sum()/sample.Length;
var min = sample.Min();
var max = sample.Max();
louguanghai 2015-05-12
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
sample.Sum()/sample.Length
我不太看得懂你的意思,能帮我写下完整代码吗,谢谢!
  • 打赏
  • 举报
回复
sample.Sum()/sample.Length
louguanghai 2015-05-12
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
sum += Convert.ToSingle(sample[i]);

我把程序改成这样了:
string[] sample = new string[dataGridView1.Rows.Count];
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sample[i] = dataGridView1.Rows[i].Cells[0].ToString();
}

//计算平均值
float sum = 0;
int num = 100;

for (int i = 0; i < num;i ++)
{
sum += Convert.ToSingle(sample[i]);
}
textBox2.Text = (sum / num).ToString();
但是在调试的时候出现一下问题:

bdmh 2015-05-12
  • 打赏
  • 举报
回复
sum += Convert.ToSingle(sample[i]);
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧