私はそのような10進数のリストを持っています:
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
この数値を次のようにグループ化したいと思います。最初の数値と 2 番目の数値の差が 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