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.


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.


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);

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.