2010-10-07 4 views
106

Ich frage mich, ob es eine Möglichkeit gibt, eine Variable vom Typ Integer in BigInteger zu konvertieren. Ich habe versucht, die Variable Integer typecasting, aber ich bekomme einen Fehler, der inconvertible Typ sagt.Konvertieren von Integer in BigInteger

+9

Sie ein paar Fragen zu BigInteger gefragt haben, die ziemlich leicht gelöst werden würde, indem die Javadocs lesen. Folgen Sie dem Link in meiner Antwort und überprüfen Sie alle Methoden und Konstruktoren, die BigInteger hat. – jjnguy

Antwort

205

Die Methode, die Sie wollen BigInteger#valueOf(long val) ist.

Z. B.

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

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

+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 Ganzzahl) – jjnguy

+0

Das würde genauso gut funktionieren. Auf einem Integer wird der intValue() nicht überlaufen, so wird der Aufruf von valueOf einfach den int zu einem langen erweitern. Es gibt keinen merklichen Unterschied zwischen der Verwendung von longValue() und intValue() in diesem Beispiel, aber wenn er mit einem Long begann, würde er longValue() verwenden wollen. – jbindel

+0

Es wurde auch vorgeschlagen, dass 'intValue()' schön aussieht, und moderne Versionen von Java werden die 'Integer' automatisch in ein' int' auflösen, das dann verwendet wird. Das automatische Unboxing blendet nur dieses Detail aus. – jbindel

-6

Sie können das String Konstruktor von BigInteger wie so:

int regularInt = 321312; // some value 
BigInteger bigInt = new BigInteger(String.valueOf(regularInt)); 
0

Sie können auf diese Weise tun:

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

Sie können, aber warum sollten Sie? Eine viel bessere Lösung wird in der bereits akzeptierten Antwort vorgeschlagen. –

+0

Wenn Sie Strings erstellen, um Ganzzahlmathematik auszuführen, werden mehr CPU-Zyklen verbraucht, als Sie zählen möchten. – jbindel