Conversion d'un entier à BigInteger

129

Je me demandais s'il y avait un moyen de convertir une variable de type Integer, en BigInteger. J'ai essayé de typer la variable Integer, mais j'obtiens une erreur qui indique le type inconvertible.

Steffan Harris
la source
12
vous avez posé quelques questions sur BigInteger qui seraient résolues assez facilement en lisant les Javadocs. Suivez le lien dans ma réponse et découvrez toutes les méthodes et tous les constructeurs de BigInteger.
jjnguy

Réponses:

239

La méthode souhaitée est BigInteger # valueOf (long val) .

Par exemple,

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

Créer une chaîne en premier est inutile et indésirable.

jbindel
la source
2
@Mich, non. S'il s'agit d'un entier, Java le développera automatiquement pour vous. (L'OP dit qu'il a un entier)
jjnguy
Cela fonctionnerait tout aussi bien. Sur un entier, intValue () ne débordera pas, donc l'appel à valueOf élargira simplement l'int à un long. Il n'y a pas de différence notable entre l'utilisation de longValue () et intValue () dans cet exemple, mais s'il commençait avec un Long, il voudrait utiliser longValue ().
jbindel
2
Amar, ce serait similaire à d'autres approches basées sur les chaînes. La chose clé à éviter ici est toute génération ou analyse de chaînes.
jbindel
1
Ce n'est pas que l'utilisation d'une chaîne vous donnerait la mauvaise réponse, mais c'est un travail supplémentaire pour l'ordinateur. Par exemple, vous pouvez aller dans la maison voisine en marchant à côté, ou vous pouvez aller dans la direction opposée et faire presque tout le tour du globe. Vous y arriverez toujours, et si vous avez un avion-fusée rapide, vous ne remarquerez peut-être pas le temps que cela a pris, mais c'est du gaspillage et cela prend un certain temps plus longtemps.
jbindel
1
Et que dire des cas où myInteger est nul, ce sera NPE.
Wizzard
-4

Vous pouvez faire de cette manière:

    Integer i = 1;
    new BigInteger("" + i);
Giorgios Karagounis
la source
5
Vous pouvez, mais pourquoi le feriez-vous? Une bien meilleure solution est proposée dans la réponse déjà acceptée.
Colin
Créer des chaînes pour effectuer des calculs entiers gaspille plus de cycles de processeur que vous ne voudriez en compter.
jbindel