public static double jackpotChance(int k, int highestNumber, int m)
    {
        long temp = 1;
        long tempK = 1;
        for(int i = 0; i < k; i++)
        {
            temp = temp * (highestNumber-i);
            System.out.println(temp);
        }
        for(int u = 0; u < k; u++)
        {
            tempK = tempK * (k-u);
            System.out.println(tempK);
        }
        double jackpotChance;
        jackpotChance = (temp/tempK)*m;
        return jackpotChance;
    }


最高值超过〜30会给temp一个错误的数字,因此给我jackpotChance一个错误的数字。我在java.math类中听说过BigNumber,并且尝试使用它,但是由于某种原因,它不允许我在数字类型之间进行转换。任何建议将不胜感激。是的,这是一个家庭作业问题,因此,如果您能在不给出答案的情况下提供建议,那将非常感谢:)

编辑:添加了BigInteger供参考。我得到的错误是它无法将1转换为BigInteger。

 public static BigInteger jackpotChance(int k, int highestNumber, int m)
    {
        BigInteger temp = 1;
        BigInteger tempK = 1;
        for(int i = 0; i < k; i++)
        {
            temp = temp * (highestNumber-i);
            System.out.println(temp);
        }
         for(int u = 0; u < k; u++)
        {
            tempK = tempK * (k-u);
            System.out.println(tempK);
        }
        BigDecimal jackpotChance;
        jackpotChance = (temp/tempK)*m;
        return jackpotChance;
    }

最佳答案

为什么不对temp和tempk也使用double?那将解决您的问题。

10-08 08:53