Konwersja z Integer do BigInteger


129

Zastanawiałem się, czy istnieje sposób na przekonwertowanie zmiennej typu Integer na BigInteger. Próbowałem typecastingu zmiennej Integer, ale pojawia się błąd, który mówi o typie nieodwracalnym.


12
zadałeś kilka pytań dotyczących BigInteger, które można by dość łatwo rozwiązać, czytając Javadocs. Kliknij link w mojej odpowiedzi i sprawdź wszystkie metody i konstruktory, które ma BigInteger.
— jjnguy

Odpowiedzi:


239

Potrzebna metoda to BigInteger # valueOf (long val) .

Na przykład,

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

Tworzenie najpierw łańcucha jest niepotrzebne i niepożądane.


2
@Mich, nie. Jeśli jest to liczba całkowita, Java automatycznie ją rozwinie. (OP mówi, że ma liczbę całkowitą)
— jjnguy

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

2
Amar, byłoby to podobne do innych podejść opartych na łańcuchach. Kluczową rzeczą, której należy tutaj unikać, jest generowanie lub analizowanie ciągów znaków.
— jbindel

1
Nie chodzi o to, że użycie ciągu znaków dałoby złą odpowiedź, ale to dodatkowa praca dla komputera. Na przykład możesz przejść do sąsiedniego domu, idąc obok, lub możesz iść w przeciwnym kierunku i objechać prawie całą kulę ziemską. Nadal byś się tam dostał, a jeśli masz szybki samolot rakietowy, możesz nie zauważyć czasu, jaki to zajęło, ale jest to marnotrawstwo i zajmuje trochę czasu.
— jbindel,

1
A co z przypadkami, gdy myInteger ma wartość null, będzie to NPE.
— Wizzard

-4

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

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

5
Możesz, ale dlaczego miałbyś to zrobić? W przyjętej już odpowiedzi proponuje się znacznie lepsze rozwiązanie.
— Colin,

Tworzenie łańcuchów do wykonywania obliczeń całkowitoliczbowych marnuje więcej cykli procesora, niż chciałbyś zliczyć.
— jbindel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.