gpt4 book ai didi

c# - 在 360 度的列表中查找最接近的值

转载 作者:行者123 更新时间:2023-12-05 02:26:26 28 4
gpt4 key购买 nike

我有一长串数字,其中包含测量的角度。基本思想是它看起来像这样:

var list = new List<double>() {352.9, 354.9, 356.9, 359, 1, 3.1, 5.9};

当我指定某个值 x 时,我正在寻找一种方法来获取最近的上限和下限 值。例如,如果 x = 354.6,我希望上限值为 x_up = 354.9,下限值为 x_low = 352.9。我想用这个 method ,但它没有考虑圆角遵循模数系统

x = 0.2 时,我希望 x_up = 1x_low = 359

关于如何实现这个的任何想法?

最佳答案

请注意,浮点类型(doublefloat)支持取余操作%;所以你可以把它写成

  using System.Linq;

...

List<double> list = new() {
352.9, 354.9, 356.9, 359, 1, 3.1, 5.9
};

double x = 0.2;

// 359
var x_low = list.MaxBy(item => ((item - x) % 360 + 360) % 360);
// 1
var x_up = list.MinBy(item => ((item - x) % 360 + 360) % 360);

编辑:如果您不能使用MaxBy,您可以使用旧的foreach 循环:

float x_low = -1;
float x_up = -1;
float x_max = -1;
float x_min = -1;

foreach (var item in list) {
var value = ((item - x) % 360 + 360) % 360;

if (x_up < 0 || value < x_min) {
x_min = value;
x_up = item;
}

if (x_low < 0 || value > x_max) {
x_max = value;
x_low = item;
}
}

关于c# - 在 360 度的列表中查找最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73775359/

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