加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将值四舍五入到C#中的某些值列表

发布时间:2020-12-15 18:25:27 所属栏目:百科 来源:网络整理
导读:我有一个双值列表,我想将变量的值舍入到只有那个数字列表 例: 列表内容为:{12,15,23,94,35,48} 变量的值为17,因此它将舍入为15 如果变量的值小于最小数,则它将四舍五入到它,如果它的值大于最大数,它将四舍五入到它. 列表内容总是根据外部因素而变化,所以我
我有一个双值列表,我想将变量的值舍入到只有那个数字列表

例:

列表内容为:{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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读