Моя программа не рассчитывается правильно (Java) - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно составить программу, которая рассчитывает вероятность выигрыша в лотерею, рассчитанную по австрийской системе (6 из 45).

Я использую эту формулу: 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);
    }

}

Заранее большое спасибо! :)

Ответы [ 2 ]

1 голос
/ 12 марта 2020

В вашем коде 45*44*43*42*41*40 он превысит int лимит. Используйте long, чтобы сохранить результат

long n = (long)45*44*43*42*41*40;
long m = (long)1*2*3*4*5*6;
long w = n/m;
0 голосов
/ 12 марта 2020

Ваш код работает как задумано, но 45 * 44 * 43 * 42 * 41 Превышает Integer.MAX_VALUE. (2147483647)

Использовать долго.

...