我有一个双值列表,我想将变量的值舍入到只有那个数字列表
例:
列表内容为:{12,15,23,94,35,48}
变量的值为17,因此它将舍入为15
如果变量的值小于最小数,则它将四舍五入到它,如果它的值大于最大数,它将四舍五入到它.
列表内容总是根据外部因素而变化,所以我无法强调我想要向上或向下舍入的值.
怎么能在C#中做到?
解决方法
这是使用LINQ的方法:
var list = new[] { 12,48 }; var input = 17; var diffList = from number in list select new { number,difference = Math.Abs(number - input) }; var result = (from diffItem in diffList orderby diffItem.difference select diffItem).First().number;
编辑:
list变量是int的隐式声明数组.第一个LINQ语句diffList定义了一个匿名类型,它具有列表中的原始数字(数字)以及它与当前值(输入)之间的差异.
第二个LINQ语句结果按顺序命令匿名类型集合,这是你的“舍入”要求.它接受该列表中的第一项,因为它将具有最小的差异,然后仅从匿名类型中选择原始.number.