我有一个列表,其中每个 double[] 的长度为 3。我想通过仅保留那些具有给定容差(向上舍入)内的唯一元素的 double[] 来清理此列表。例如,如下所示的列表:
1059.17 0 446.542225842081
1059.17 0 446.542564789741
1059.17 0 446.541759880305
959.167 0 579.827860527898
959.167 0 579.827847296075
对于给定的容差,应该变成这样=二:
1059.17 0 446.54,
959.17 0 579.83,
有没有一种聪明的方法可以巧妙地做到这一点?
最佳答案
这应该有效。它使用匿名类型的内置相等比较。
List<double[]> data = ...
int tolerance = 2;
var roundedData = data
.Select(x => new {
v1 = Math.Round(x[0], tolerance),
v2 = Math.Round(x[1], tolerance),
v3 = Math.Round(x[2], tolerance)
})
.Distinct()
.Select(x => new [] { x.v1, x.v2, x.v3 })
.ToList();
关于c# - 给定容差内的清洁列表<double[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828857/