Convertendo de Inteiro para BigInteger

129

Eu queria saber se havia alguma maneira de converter uma variável do tipo Integer, para BigInteger. Eu tentei escrever a variável inteiro, mas recebo um erro que diz tipo inconversível.

Steffan Harris
fonte
12
você fez algumas perguntas sobre o BigInteger que seriam resolvidas facilmente com a leitura dos Javadocs. Siga o link na minha resposta e confira todos os métodos e construtores que o BigInteger possui.
Jjnguy 7/10

Respostas:

239

O método que você deseja é BigInteger # valueOf (long val) .

Por exemplo,

BigInteger bi = BigInteger.valueOf(myInteger.intValue());

Fazer uma String primeiro é desnecessário e indesejado.

jbindel
fonte
2
@Mich, não. Se for um número inteiro, o Java o expandirá automaticamente para você. (O OP diz que ele tem um Integer)
jjnguy
Isso também funcionaria. Em um número inteiro, o intValue () não será excedido, portanto a chamada para valueOf simplesmente aumentará o int para um longo. Não há diferença perceptível entre o uso de longValue () e intValue () neste exemplo, mas se ele iniciou com um Long, ele desejaria usar longValue ().
jbindel
2
Amar, isso seria semelhante a outras abordagens baseadas em String. A principal coisa a evitar aqui é qualquer geração ou análise de Strings.
Jbindel
1
Não é que o uso de uma String lhe dê a resposta errada, mas é um trabalho extra para o computador. Por exemplo, você pode ir à casa ao lado andando pela porta ao lado, ou você pode ir na direção oposta e percorrer quase todo o mundo. Você ainda chegaria lá e, se tiver um avião-foguete rápido, poderá não perceber o tempo que levou, mas é um desperdício, e leva mais tempo.
Jbindel
1
E nos casos em que myInteger for nulo, será NPE.
Wizzard
-4

Você pode fazer desta maneira:

    Integer i = 1;
    new BigInteger("" + i);
Giorgios Karagounis
fonte
5
Você pode, mas por que você faria? Uma solução muito melhor é proposta na resposta já aceita.
Colin
Criar seqüências para executar matemática inteira desperdiça mais ciclos de CPU do que você gostaria de contar.
jbindel