0

我试图找出一个双值数组的“加权移动平均线”。

我试图从一些互联网示例中获得所有和平,但结果我总是得到零。

问题是“重量”的计算,它为零但不应该为零,例如 1 / 107 = 0,0093457943925234 但重量双精度值变为零,我尝试更改为 long 和 decimal 并遇到同样的问题。

有任何想法吗?

    public static double WeighteedMovingAverage(double[] data)
    {
        double aggregate = 0;
        double weight;
        int item = 1;

        int count = data.Count();

        foreach (var d in data)
        {
            weight = item / count;
            aggregate += d * weight;
            count++;
        }

        return (double)(aggregate / count);
    }
4

2 回答 2

3
weight = (double)item / (double)count;

操作前需要double避免铸造

于 2013-11-15T17:54:39.557 回答
0
public static double WeighteedMovingAverage(double[] data)
{
    double aggregate = 0;
    double weight;
    int item = 1;

    int count = data.Count();

    foreach (var d in data)
    {
        //replace with line below weight = item / count;
        weight = (double)item / (double)count;
        aggregate += d * weight;
        count++;
    }
    //replace with line below return (double)(aggregate / count);
    return (double)(aggregate / (double)count);
} 
于 2013-11-15T18:03:15.703 回答