获取数值数组中与目标数值最接近的数据序列的首尾索引
/// <summary>
/// 获取数值数组中与目标数值最接近的数据序列的首尾索引
/// </summary>
/// <param name="aim">目标数值</param>
/// <param name="aimFindArray">被查找的数值数组</param>
/// <returns>返回首尾索引的集合</returns>
private List<int[]> GetArrayLike(double aim, double[] aimFindArray)
{
//定义差值和差值最小值
double difference,differenceMin;
List<int[]> likeIndexes = new List<int[]> { };
//遍历数值数组
for (int i = 0; i < aimFindArray.Length; i++)
{
//初始化定义
difference = aim;
differenceMin = aim;
for (int j = 0; i + j < aimFindArray.Length; j++)
{
//计算差值并比较
difference = (double)((decimal)difference - (decimal)aimFindArray[i + j]);
if (difference < differenceMin)
{
differenceMin = difference;
//只保留结果刚好等于零的当前次索引 或者 小于零的前一次和当前次的索引
if (difference <= 0)
{
if (difference < 0)
{
likeIndexes.Add(new int[] { i, i + j - 1 });
}
likeIndexes.Add(new int[] { i, i + j });
break;
}
}
}
}
//返回结果
return likeIndexes;