Преобразование из Integer в BigInteger


130

Мне было интересно, есть ли способ преобразовать переменную типа Integer в BigInteger. Я попытался привести тип переменной типа Integer, но получил сообщение об ошибке, указывающее на неконвертируемый тип.


12
вы задали несколько вопросов о BigInteger, которые можно довольно легко решить, прочитав документацию Javadocs. Перейдите по ссылке в моем ответе и ознакомьтесь со всеми методами и конструкторами, которые есть в BigInteger.
jjnguy 07

Ответы:


239

Вам нужен метод BigInteger # valueOf (long val) .

Например,

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

Создавать сначала String не нужно и нежелательно.


2
@Mich, нет. Если это целое число, Java автоматически расширит его за вас. (OP говорит, что у него целое число)
jjnguy

Это тоже сработает. В Integer intValue () не будет переполняться, поэтому вызов valueOf просто расширит int до long. В этом примере нет заметной разницы между использованием longValue () и intValue (), но если он начал с Long, он хотел бы использовать longValue ().
jbindel 07

2
Amar, это было бы похоже на другие подходы на основе String. Ключевым моментом, которого здесь следует избегать, является генерация или синтаксический анализ строк.
jbindel 05

1
Дело не в том, что использование String даст вам неправильный ответ, но это дополнительная работа для компьютера. Например, вы можете пройти в соседний дом, пройдя по соседнему дому, или вы можете пойти в противоположном направлении и обойти почти весь земной шар. Вы все равно доберетесь туда, и если у вас есть быстрый ракетоплан, вы можете не заметить, сколько времени на это потребовалось, но это расточительно и требует больше времени.
jbindel 05

1
А как насчет случаев, когда myInteger имеет значение null, это будет NPE.
Wizzard

-4

Сделать можно так:

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

5
Можно, но зачем? В уже принятом ответе предлагается гораздо лучшее решение.
Колин

Создание строк для выполнения целочисленной математики тратит больше циклов ЦП, чем вы можете рассчитывать.
jbindel
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.