【问题标题】:C# Nearest Low Value in array [closed]数组中的C#最近的低值[关闭]
【发布时间】:2017-05-08 13:07:40
【问题描述】:

我需要获取数组中最接近的值,但是,我需要它是低选项而不是高 例如。

double[] array = new double[4] { 1.0, 1.5, 1.6, 1.8 };

double NewValue = 1.4;

结果应该是 1.0,而不是最接近的 1.5

【问题讨论】:

  • 所以你想要小于给定数字的最接近的?
  • 数组总是排序的吗?
  • 我猜你已经尝试了一些东西,是吗?如果你能证明这一点,那就太好了。帮助您了解哪里出错会更容易。
  • 如果数字小于数组中的最小值怎么办?
  • 一个好的开始是想想是如何想出1.0作为答案的,然后从那里尝试编写代码,遵循你使用的相同的思维步骤

标签: c# arrays linq


【解决方案1】:

下面的 sn-p 将使用标准 LINQ:

var nearestBelow = newValue - array.Where(n => n <= newValue)
                                  .Min(n => newValue - n);

【讨论】:

    【解决方案2】:

    换句话说,您希望所有元素的最大值小于或等于 NewValue ?

    double nearest = array.Where(x => x <= NewValue).Max<double>();
    

    【讨论】:

    • 除非所有的值都更大?
    • @o_weisman:在这种情况下,如果我正确阅读了问题,则没有答案。所以这不是问题。
    • 扫描两次似乎很可惜:var nearest = array.Aggregate((a, t) =&gt; a = (t &lt; NewValue) ? Math.Max(a, t) : a);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多