2010-10-07 20 views
106

Zastanawiam się, czy istnieje jakiś sposób przekonwertowania zmiennej typu Integer, na BigInteger. Próbowałem typecasting zmiennej Integer, ale pojawia się błąd, który mówi typu inconvertible.Konwersja z Integer, na BigInteger

+9

masz zadał kilka pytań dotyczących BigInteger, które byłyby rozwiązane dość łatwo poprzez czytanie Javadocs. Kliknij link w mojej odpowiedzi i sprawdź wszystkie metody i konstruktory, które posiada BigInteger. – jjnguy

Odpowiedz

205

Sposób chcesz to BigInteger#valueOf(long val).

np

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

Making String pierwszy jest niepotrzebne i niepożądane.

+2

@Mich, no. Jeśli jest liczbą całkowitą, Java automatycznie ją rozszerzy. (OP mówi, że ma liczbę całkowitą) – jjnguy

+0

To zadziałałoby równie dobrze. Na Integer intValue() nie przepełni się, więc wywołanie valueOf po prostu rozszerzy int do długiego. Nie ma zauważalnej różnicy między używaniem longValue() i intValue() w tym przykładzie, ale gdyby zaczął od Long, chciałby użyć longValue(). – jbindel

+0

Zasugerowano również, że upuszczenie 'intValue()' wygląda ładnie, a nowoczesne wersje Javy automatycznie rozpakują 'Integer' na' int', który jest następnie używany. Automatyczne rozpakowywanie ukrywa tylko te szczegóły od ciebie. – jbindel

-6

Można użyć konstruktora String z BigInteger tak:

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

Można to zrobić w ten sposób:

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

Możesz, ale dlaczego miałbyś? O wiele lepsze rozwiązanie zaproponowano w już zaakceptowanej odpowiedzi. –

+0

Tworzenie łańcuchów do obliczania liczby całkowitej powoduje marnowanie więcej cykli procesora, niż by się liczyło. – jbindel