Boa noite.
Tem como fazer adição de BigInteger, com números maiores que o limite de um Long?
Sim, justamente esse o propósito das classes BigInteger
e BigDecimal
.
Dê uma olhada na documentação dessas classes, vai encontrar os métodos de soma, subtração, adição e multiplicação.
Se você tem equações muito complexas, recomendo que utilize a API javolution, as classes numéricas dessa API são muito mais rápidas e leves que o BigInteger
e BigDecimal
.
Não encontrei forma de somar sem usar números long. Conhece alguma?
Agora
Esse exemplo abaixo dá a exceção Exception in thread “main” java.lang.NumberFormatException: Zero length BigInteger
Exemplo
BigInteger fator1 = new BigInteger(“9223372036854775807”);
BigInteger fator2 = new BigInteger(“9223372036854775807”);
BigInteger soma = new BigInteger("");
soma.add(fator1);
soma.add(fator2);
//long valor = Long.MAX_VALUE;
System.out.println(soma);
Antes
Eu li a documentação apresentada dentro da IDE e, agora, consultei da Oracle pra ver se consta alguma diferença, entretanto não consigo ver uma possibilidade de somar valores maiores que o limite de long, sendo que o add() pede um long e quando adicionamos um valor, manualmente, ele pede uma string.
Claro, olha como você está instanciando seu BigInteger
:
BigInteger soma = new BigInteger("");
Uma String
vazia não é um número.
Deveria ser assim:
BigInteger soma = fator1.add(fator2);