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?那将解决您的问题。