gpt4 book ai didi

c# - 如何将 double 舍入到预定义列表中最接近的最高值?

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:49 25 4
gpt4 key购买 nike

环顾四周但没有运气后,这里的第一个问题。该程序的这一部分目的是将 >= 1 且 <10 的值四舍五入到下面列表中的下一个最高值。将四舍五入的列表示例是:

var preferredValuesList = new List<double> { 1.0, 1.1, 1.2, 1.3, 1.5, 1.6,  
1.8, 2.0, 2.2, 2.4, 2.7, 3.0,
3.3, 3.6, 3.9, 4.3, 4.7, 5.1,
5.6, 6.2, 6.8, 7.5, 8.2, 9.1};

例如,值 2.1 应四舍五入为 2.2。 2.4 的值应该保持在 2.4

我目前从此处的另一个问题中执行此操作的方法如下:

double preferredResistance = 
preferredValuesList.OrderBy(item => Math.Abs(tempResistance - item)).First();

我听说过使用循环代替舍入,但我是新手,不明白我会怎么做。

感谢你们提供的任何帮助。

最佳答案

您可以使用 linq 进行此查询:

double value = 2.1;
double roundedValue = preferredValuesList.OrderBy(x=>x).FirstOrDefault(x=> x>= value);

它所做的是返回 preferredValuesList 中大于或等于未舍入值的第一个值。这正是您想要的。

您提到的First 方法返回满足指定条件的序列中的第一个元素。(来自Documentation)。此示例中的条件是 x >= value

方法 FirstOrDefault 做同样的事情,除了如果没有找到元素而不是抛出异常,它将返回默认值(0,在 double 列表的情况下>).

注意:.OrderBy(x=>x) 只是为了确保您的列表是有序的(即不是 {3 ,7, 5,1, 9} 例如...)

关于c# - 如何将 double 舍入到预定义列表中最接近的最高值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26991235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com