Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的程序计算不正确(Java)_Java_Calculation - Fatal编程技术网

我的程序计算不正确(Java)

我的程序计算不正确(Java),java,calculation,Java,Calculation,我必须做一个程序来计算中彩票的概率 按奥地利制计算(45分之6) 我用这个公式:45/6!*39! = 45*44*43*42*41*40/1*2*3*4*5*6(因为数字缩短了)。但计算不正确,程序给出的答案是2179827,而不是8415060。谁能帮我一下,告诉我哪里出了错 package homework_1; public class Aufgabe_3 { public static void main(String[] args) { // TODO A

我必须做一个程序来计算中彩票的概率 按奥地利制计算(45分之6)

我用这个公式:
45/6!*39! = 45*44*43*42*41*40/1*2*3*4*5*6
(因为数字缩短了)。但计算不正确,程序给出的答案是
2179827
,而不是
8415060
。谁能帮我一下,告诉我哪里出了错

package homework_1;

public class Aufgabe_3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int n = 45*44*43*42*41*40;
        int m = 1*2*3*4*5*6;
        int w = n/m;

        System.out.println("Die Wahrscheinlichkeit ist: " + w);
    }

}

提前非常感谢!:)

您的代码按预期工作,但45*44*43*42*41超出了Integer.MAX\u值。(2147483647)


在代码中使用long.

将超过
int
限制。使用
long
存储结果

long n = (long)45*44*43*42*41*40;
long m = (long)1*2*3*4*5*6;
long w = n/m;

45*44*43*42*41*40=5864443200>2147483648=2^31=Integer.maxValue()
A备注:程序计算的不是概率,而是唯一事件的数量。概率是倒数(因为这是一个相等的分布)。您好。非常感谢您的帮助,我将它改为long,但它仍然给出了错误的答案?你知道为什么吗?你改变了所有的3个变量吗?因为如果其中任何一个是int,结果将被类型转换为int,给出错误。现在尝试使用
long n=45*44*43*42*41*40*39*38并查看发生了什么。您将看到
n
将保持
-1908984704
。问题是第一个值被计算为整数,然后结果(仍然是int)被分配给长变量。您计算的
n
1569475904
,但它应该是
5864443200
@Pshemo无需将
*39*38
添加到该列表中,它已经溢出了。