gpt4 book ai didi

使用 Contains 方法检查 List 中的 float 时的 C# 准确性

转载 作者:太空狗 更新时间:2023-10-29 21:08:00 26 4
gpt4 key购买 nike

我有一个 float 的列表s 并想检查它是否已经包含带有 List.Contains() 的特定值方法。我知道 float你经常不能使用的等式测试==但像 myFloat - value < 0.001 .

我的问题是,Contains方法说明这个或者我需要使用说明 float 的方法用于测试 float 是否在列表中的精度错误?

最佳答案

来自 List(T).Contains 的文档:

This method determines equality by using the default equality comparer, as defined by the object's implementation of the IEquatable<T>.Equals method for T (the type of values in the list).

因此您需要自己处理与阈值的比较。例如,您可以使用自己的自定义相等比较器。像这样:

public class FloatThresholdComparer : IEqualityComparer<float>
{
private readonly float _threshold;
public FloatThresholdComparer(float threshold)
{
_threshold = threshold;
}

public bool Equals(float x, float y)
{
return Math.Abs(x-y) < _threshold;
}

public int GetHashCode(float f)
{
throw new NotImplementedException("Unable to generate a hash code for thresholds, do not use this for grouping");
}
}

并使用它:

var result = floatList.Contains(100f, new FloatThresholdComparer(0.01f))

关于使用 Contains 方法检查 List<float> 中的 float 时的 C# 准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42660939/

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