在C#中,我应该使用哪种数据类型来存储标准偏差的数字列表?

Ram*_*ing 1 .net c#

我正在执行一些测试,并且我有一个包含表单错误的值列表:

12.7 ± 0.3
14.2 ± 0.1
70.8 ± 0.5
Run Code Online (Sandbox Code Playgroud)

我需要将标准偏差与值保持一致,因为我稍后需要将其用于各种计算.

目前我正在使用

List<KeyValuePair<double, double>>
Run Code Online (Sandbox Code Playgroud)

但有更好的解决方案吗?

pap*_*zzo 5

如果值不会改变,我会选择struct.您可以添加逻辑(但您也可以使用类来完成).除非你特别需要加倍,否则去小数.

public struct StdDev
{
    public decimal Val { get; }
    public decimal Dev { get; }
    public decimal Max { get { return Val + Dev; } }
    public decimal Min { get { return Val - Dev; } }
    public bool IsInDev (decimal val)
    {
        return val >= Min && val <= Max;
    }
    public override string ToString()
    {
        return $"{Val} +- {Dev}";
    }
    public StdDev (decimal val, decimal dev)
    {
        Val = val;
        Dev = dev;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以覆盖Equals和GetHashCode.