Konvertieren von Integer nach BigInteger

129

Ich habe mich gefragt, ob es eine Möglichkeit gibt, eine Variable vom Typ Integer in BigInteger zu konvertieren. Ich habe versucht, die Integer-Variable zu typisieren, aber es wird ein Fehler angezeigt, der den nicht konvertierbaren Typ angibt.

Steffan Harris
quelle
12
Sie haben ein paar Fragen zu BigInteger gestellt, die sich durch das Lesen der Javadocs ziemlich leicht lösen lassen. Folgen Sie dem Link in meiner Antwort und sehen Sie sich alle Methoden und Konstruktoren von BigInteger an.
jjnguy

Antworten:

239

Die gewünschte Methode ist BigInteger # valueOf (long val) .

Z.B,

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

Es ist unnötig und unerwünscht, zuerst einen String zu erstellen.

jbindel
quelle
2
@Mich, nein. Wenn es sich um eine Ganzzahl handelt, wird sie von Java automatisch für Sie erweitert. (Das OP sagt, er hat eine
ganze Zahl
Das würde genauso gut funktionieren. Bei einer Ganzzahl läuft intValue () nicht über, sodass der Aufruf von valueOf das int einfach auf ein langes erweitert. In diesem Beispiel gibt es keinen merklichen Unterschied zwischen der Verwendung von longValue () und intValue (). Wenn er jedoch mit einem Long beginnen würde, würde er longValue () verwenden wollen.
Jbindel
2
Amar, das wäre ähnlich wie bei anderen String-basierten Ansätzen. Der Schlüssel, den Sie hier vermeiden sollten, ist das Generieren oder Parsen von Strings.
Jbindel
1
Es ist nicht so, dass die Verwendung eines Strings die falsche Antwort liefert, aber es ist zusätzliche Arbeit für den Computer. Zum Beispiel können Sie das Haus nebenan gehen, indem Sie nebenan gehen, oder Sie können in die entgegengesetzte Richtung gehen und fast den ganzen Weg um den Globus gehen. Sie würden immer noch dort ankommen, und wenn Sie ein schnelles Raketenflugzeug haben, werden Sie vielleicht nicht bemerken, wie lange es gedauert hat, aber es ist verschwenderisch und es dauert einige Zeit länger.
Jbindel
1
Und was ist mit Fällen, in denen myInteger null ist, ist es NPE.
Wizzard
-4

Sie können dies folgendermaßen tun:

    Integer i = 1;
    new BigInteger("" + i);
Giorgios Karagounis
quelle
5
Sie können, aber warum sollten Sie? Eine viel bessere Lösung wird in der bereits akzeptierten Antwort vorgeschlagen.
Colin
Wenn Sie Zeichenfolgen erstellen, um ganzzahlige Berechnungen durchzuführen, werden mehr CPU-Zyklen verschwendet, als Sie zählen möchten.
jbindel