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.