- 积分
- 769
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-7-6
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 ouhuining 于 2012-7-9 23:50 编辑
以下是求一个数据中最小值的一个小程序
由于double.NaN不能进行大小比较,所以打算把数据里的NaN剔除,故用红色部分代码代替了temp=array[0];
private double Min(double[] array, int size)
{
double temp = 0;
for (int i = 0; i < size; i++)
{
if (array != double.NaN)
{
temp = array;
//break;
}
}
for (int i = 0; i < size; i++)
{
if (temp > array && array != double.NaN)
temp = array;
}
return temp;
}
后来,
我加了一句//break; 目的是为了在成功赋值给temp后,跳出循环,避免数据量大的时候运行次数太多。奇怪的是,如果array[0]是NaN的话,加了这句之后,temp的值就是NaN。
所以就没有办法进行比较了。
求解。
例如:
private void button7_Click(object sender, EventArgs e)
{
double[] a = new double[5] { 1, double.NaN, 3, 4, 5 };
double b;
b = Min(a, a.Length);
textBox1.Text = b.ToString();
}
此时,b=1。
如果a={double.NaN, 2, 3, 4, 5 };
运行结果是b=double.NaN。
break语句已经放在了if语句里面了,为什么还是会出现这种情况呢?
也尝试过,用goto语句代替break,但是结果还是一样。
而continue的话可以完成判断,但是跟我原来的目的不符。
求解。
|
|