0

Reddit に基づいて並べ替えアルゴリズムを作成する: http://amix.dk/blog/post/19588

System.Math シグネチャの一部はアプリケーションが異なるため、すべてを合わせるのに少し苦労しています。

public class Calculation
{
    protected DateTime Epoch = new DateTime(1970,1,1);

    protected int EpochSeconds(DateTime date)
    {
        var td = date - Epoch;
        return td.Days*86400 + td.Seconds + ((td.Milliseconds)/1000000);
    }

    protected int Score(int upVotes,int downVotes)
    {
        return upVotes - downVotes;
    }

    public int HotScore(int upVotes,int downVotes,DateTime date)
    {
        var s = Score(upVotes, downVotes);
        var order = Math.Log(Math.Max(Math.Abs(s), 1), 10);
        var sign = Math.Sign(s); //Edit from Jonathon Reinhart
        var seconds = EpochSeconds(date) - 1134028003;
        return Math.Round(order + sign + *seconds/45000, 7);
    }
}

詳細情報の編集

具体的には、最後の行でエラーが発生しています

return Math.Round(order + sign + *seconds/45000, 7);
//error "The * or -> operator must be applied to a pointer"

"

メソッド署名で見つけることができる最も近い一致はこれです: http://msdn.microsoft.com/en-us/library/f5898377

4

2 に答える 2

1

最後の行に構文エラーがあります - のシーケンスが+ *無効です。最後の行に必要なのはこれだと思います(このMath.Roundオーバーロードを使用):

return Math.Round(order + sign * ((double)seconds / 45000), 7);
于 2012-08-07T21:01:27.127 に答える