双精度值设置为 +Infinity 或 NaN

Double value being set to +Infinity or NaN

我目前正在制作一个玩骗子骰子的 AI,并且想计算出价为真的概率,所以我使用了这个公式(d = 所有骰子的总和,n = 我的赌注相等的骰子是(如 4 2)):Liars Dice Chances Formula

唯一的问题是,如果我尝试类似 Math.Round 如果有帮助,这就是代码(玩家 * 5 每个玩家拥有的 5 个骰子):

ChanceOfTruth = 0
    for (int i = CurrentBid; i <= Players * 5; i++) 
        {
         ChanceOfTruth += (Factorial(Players * 5)/(Factorial(i)*Factorial(Players*5-i)))*Math.Pow(1f/6f,i)*Math.Pow(5f/6f,Players*5-i);   
         }
    public static double Factorial(double num) 
            { 
                for(int i = (int)num - 1; i > 0; i--) 
                {
                    num *= i;
                }
                return num;
            }

再次检查问题是我的阶乘函数没有正确的 0 结果,所以这解决了问题

public static double Factorial(double num) 
            { 
                if(num == 0)
                {
                    return 1;
                }
                for(int i = (int)num - 1; i > 0; i--) 
                {
                    num *= i;
                }
                return num;
            }