0

double値の配列の「加重移動平均」を取得しようとしています。

いくつかのインターネットの例からすべての平和をまとめようとしましたが、結果として常にゼロになります。

問題は「重量」の計算です。ゼロであってもゼロであってはなりません。たとえば、1 / 107 = 0,0093457943925234 ですが、重量の double 値がゼロになるため、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 に答える