Conversione da Integer, in BigInteger


129

Mi chiedevo se ci fosse un modo per convertire una variabile di tipo Integer, in BigInteger. Ho provato a scrivere a macchina la variabile Integer, ma viene visualizzato un errore che dice tipo inconvertibile.


12
hai fatto alcune domande su BigInteger che potrebbero essere risolte abbastanza facilmente leggendo i Javadocs. Segui il link nella mia risposta e controlla tutti i metodi e i costruttori di BigInteger.
jjnguy,

Risposte:


239

Il metodo che desideri è BigInteger # valueOf (long val) .

Per esempio,

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

Creare prima una stringa non è necessario né indesiderato.


2
@Mich, no. Se è un numero intero, Java lo espanderà automaticamente per te. (L'OP dice che ha un numero intero)
jjnguy

Funzionerebbe altrettanto bene. In un numero intero intValue () non trabocca, quindi la chiamata a valueOf semplicemente allargherà l'int a un lungo. Non c'è alcuna differenza evidente tra l'utilizzo di longValue () e intValue () in questo esempio, ma se avesse iniziato con un Long, vorrebbe usare longValue ().
jbindel,

2
Amar, sarebbe simile ad altri approcci basati su stringhe. La cosa chiave da evitare qui è qualsiasi generazione o analisi delle stringhe.
jbindel,

1
Non è che usare una stringa ti darebbe la risposta sbagliata, ma è un lavoro extra per il computer. Ad esempio, puoi andare nella casa accanto camminando nella porta accanto, oppure potresti andare nella direzione opposta e andare quasi per tutto il mondo. Ci arriveresti ancora, e se hai un aereo a razzo veloce, potresti non notare il tempo impiegato, ma è dispendioso e impiega un po 'più di tempo.
jbindel,

1
E che dire dei casi in cui myInteger è null sarà NPE.
Wizzard,

-4

Puoi fare in questo modo:

    Integer i = 1;
    new BigInteger("" + i);

5
Puoi, ma perché dovresti? Una soluzione molto migliore è proposta nella risposta già accettata.
Colin,

La creazione di stringhe per eseguire la matematica di numeri interi spreca più cicli della CPU di quanto ti dispiacerebbe contare.
jbindel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.