Я вычислял простую комбинацию с помощью java, когда я определяю результат как двойной, ответ кажется правильным, только потерял некоторую точность, но когда я использую класс BigInteger, ответ выглядит просто неправильно, я не понимаю, почему это так, вот код.BigInteger Wrong Answer
import java.math.BigInteger;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("Please input the lottery sum");
int num = in.nextInt();
System.out.println("Please input the available sum");
int avail = in.nextInt();
//double sum = 1;
BigInteger sum = BigInteger.ONE;
for (int i = avail - 1; i >= 1;i--){
//sum = sum*(num - i)/i;
sum = sum.multiply(BigInteger.valueOf(num - i)).divide(BigInteger.valueOf(i));
}
//sum = sum * num/avail;
sum = sum.multiply(BigInteger.valueOf(num)).divide(BigInteger.valueOf(avail));
System.out.println(sum);
in.close();
}
}
Вы должны использовать BigDecimal вместо – Plirkee
Это поможет, если вы предоставите [mcve] вместо этого, показывая ровно один расчет, а также ожидаемый и фактический вывод. Кажется вероятным, что вы как-то ожидаете, что «BigInteger» будет представлять нецелые значения, но это трудно сказать, поскольку вы не указали расчет. –