Em qual situação eu uso o BigInterger ?
Ainda não manjo muitos do inglês não mano kkk
mas vc sabe qual a diferença entre BigInterger ONE || TEN || ZERO ?
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.
Ajudou muito cara, vlw mesmo.