使用Linq给出递增的float float数组

时间:2014-07-14 17:56:23

标签: c# linq

什么是最有效的方法 使用linq初始化一个大小为n的float数组 例如,如果从0.05208

开始,数组增量为1.06771

我会

float[] x =  {1.06771, 1.11979, 1.17187, 1.22395}

2 个答案:

答案 0 :(得分:4)

您可以使用Range方法,如下所示:

var x = Enumerable.Range(0, n).Select(i => 1.06771f + 0.05208f * i).ToArray();

作为一项有趣的练习,您还可以像这样创建自己的iterator

public IEnumerable<float> Sequence(float start, float step)
{
    while (true) {
        yield return start;
        start += step; 
    }
}

然后像这样使用它:

var x = Sequence(1.06771f, 0.05208f).Take(n).ToArray();

注意:请注意start += step会导致舍入错误在迭代序列时累积。

答案 1 :(得分:3)

您可以使用Enumerable.Range()。它给出了start和count参数的连续整数范围。

float[] x = Enumerable.Range(0, 4)
    .Select(n => 1.06771f + 0.05208f * n).ToArray();