我有一个像这样的十进制数字列表:
0.01
0.03
0.10
0.18
0.24
0.28
0.30
0.31
0.33
0.55
2.34
3.37
9.19
9.22
10.28
我想这样分组这些数字:如果第一个和第二个数字之间的差是 0.02;这应该在 KeyValuePair 列表中的相同键中..
我有如下方法:
private List<KeyValuePair<int, float>> NumberingAngles(List<float> angleList)
{
List<KeyValuePair<int, float>> numberedList = new List<KeyValuePair<int, float>>();
numberedList.Clear();
#region BETA ACILARI TIPLENDIR
float sonDeger = 0f;
int z = 0;
float ilkDeger = 0f;
int mB = 2;
float difference = 0f;
float tipFarki = 0f;
foreach (float item in angleList)
{
difference = Convert.ToSingle((item - sonDeger).ToString("0.00"));
if (difference > 0.02f)
{
numberedList.Add(new KeyValuePair<int, float>(mB, item));
sonDeger = item;
mB++;
}
else
{
if (z == 0)
{
ilkDeger = item;
z++;
}
tipFarki = item - ilkDeger;
if (tipFarki > 0.02f)
{
numberedList.Add(new KeyValuePair<int, float>((mB - 1), item));
sonDeger = item;
mB++;
ilkDeger = 0f;
z = 0;
}
else
{
numberedList.Add(new KeyValuePair<int, float>((mB - 1), item));
sonDeger = item;
}
}
}
#endregion
return numberedList;
}
问题是:当我在 KeyValuePair 列表中获得结果时,一些键丢失,如数字 7.. 它从 6 跳到 8,如下所示。我该如何解决这个问题..也许这对某些人来说很容易解决..
结果如下..
1 0.01
1 0.03
2 0.10
3 0.18
4 0.24
5 0.28
5 0.30
6 0.31
6 0.33
8 0.55
9 2.34
10 3.37
11 9.19
12 9.22
13 10.28