Quando devo usar a classe BigInteger?

Em qual situação eu uso o BigInterger ?

https://docs.oracle.com/javase/8/docs/api/index.html

Ainda não manjo muitos do inglês não mano kkk
mas vc sabe qual a diferença entre BigInterger ONE || TEN || ZERO ?

https://translate.google.com.br

1 curtida

kkkkkk vlw

@Djongador, a indicação do @Trapezus foi o suficiente? Se não, aqui vai minha tentativa de ajudar:

Minhas pesquisas me levaram pra essa página que explica que BigInteger é usada em operações matemáticas que envolvam cálculos de números inteiros muito grandes.

Um exemplo citado no artigo é o fatorial de 100. O fatorial de um número pode ser calculado assim:

int fact = 1;
int number = 100;

for (int i = 2; i <= number; i++) {
  fact = fact * i;
}

System.out.println(fact);

Mas usar o código acima para calcular o fatorial de números acima de 12 produz resultados errados devido a limitação do tipo int.

Para contornar esta limitação vc pode substituir o int por double, assim:

double fact = 1;
double number = 100;

for (int i = 2; i <= number; i++) {
  fact = fact * i;
}

System.out.println(fact);

Neste caso vc vai ter a informação correta em notação científica. Mas com BigInteger vc pode ter o resultado usando a notação comum assim:

int number = 100;
BigInteger fact = BigInteger.ONE;

for (int i = 2; i <= number; i++) {
  fact = fact.multiply(BigInteger.valueOf(i));
}

System.out.println(fact);

A diferença entre BigInteger.ZERO, BigInteger.ONE, BigInteger.TWO e BigInteger.TEN é apenas o valor. estes fields foram criados apenas por comodidade por serem números usado comumente.

Há várias formas de criar um BigInteger, vou citar apenas duas:

Uma delas vc pôde ver no código acima que é usando o método estático valueOf().

BigInteger number = BigInteger.valueOf(10);

A outra é passando uma String no constructor.

BigInteger number = new BigInteger("10");

Como vc pode ver, ao invés de ter o trabalho de criar um BigInteger de valor 10, eu posso simplesmente usar o BigInteger.TEN e o problema estará resolvido.

Quando tiver uma dúvida é importante que o título reflita exatamente, de forma resumida, qual é sua pergunta. Por isso tomei a liberdade de alterar seu titulo.

1 curtida

Ajudou muito cara, vlw mesmo.