c# - 在数组中找到最接近的值

标签 c# arrays find

int[] array = new int[5]{5,7,8,15,20};

int TargetNumber = 13;

对于目标数字,我想在数组中找到最接近的数字。例如,当目标数字是 13 时,上面数组中最接近它的数字是 15。我如何在 C# 中以编程方式完成它?

最佳答案

编辑:调整了下面的查询以转换为使用 long 算法,这样我们就可以避免溢出问题。

我可能会使用 MoreLINQMinBy 方法:

var nearest = array.MinBy(x => Math.Abs((long) x - targetNumber));

或者您可以只使用:

var nearest = array.OrderBy(x => Math.Abs((long) x - targetNumber)).First();

...但这将对整个集合进行排序,而您实际上并不需要它。对于数组来说,这不会有太大区别,诚然......但与描述你实际上试图做的事情相比,它感觉不太正确do: 根据某种函数找到具有最小值的元素。

请注意,如果数组为空,这两个操作都会失败,因此您应该先检查一下。

关于c# - 在数组中找到最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120944/

相关文章:

c - 在字符串中存储 double 值。C

javascript - 如何在javascript中组合多个数组?

c - 二维数组,打印索引。?

c++ - 希望在 STL vector 中找到 C++ STL vector

android - 如何判断蓝牙是否已连接?

c# - 连接必须有效并打开 C3

c# - 无法加载文件或程序集...System.Data.Entity.dll

c# - x64 应用程序访问 mdb 数据库

regex - linux命令: not equal to的正则表达式

c# - 如何在代码隐藏中设置WPF应用程序命令