정수에서 BigInteger로 변환


129

Integer 유형의 변수를 BigInteger로 변환하는 방법이 있는지 궁금합니다. Integer 변수를 타입 캐스팅하려고했지만 변환 할 수없는 유형이라는 오류가 발생합니다.


12
Javadoc을 읽으면 상당히 쉽게 해결할 수있는 BigInteger에 대해 몇 가지 질문을했습니다. 내 답변의 링크를 따라 BigInteger가 가지고있는 모든 메소드와 생성자를 확인하십시오.
— jjnguy

답변:


239

원하는 메소드는 BigInteger # valueOf (long val) 입니다.

예 :

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

문자열을 먼저 만드는 것은 불필요하고 바람직하지 않습니다.


2
@ 미치 정수이면 Java가 자동으로 확장합니다. (영업 그가 정수가 말한다)
— jjnguy

그것은 잘 작동합니다. Integer에서는 intValue ()가 오버플로되지 않으므로 valueOf를 호출하면 int가 long으로 넓어집니다. 이 예제에서 longValue ()와 intValue ()를 사용하는 것 사이에는 눈에 띄는 차이가 없지만 Long으로 시작한 경우 longValue ()를 사용하려고합니다.
— jbindel

2
Amar는 다른 String 기반 접근 방식과 비슷합니다. 여기서 피해야 할 핵심은 문자열의 생성 또는 구문 분석입니다.
— jbindel

1
String을 사용하면 잘못된 대답을 얻을 수는 없지만 컴퓨터를위한 추가 작업입니다. 예를 들어, 옆집을 걸어 옆집으로 가거나 반대 방향으로 이동하여 지구 곳곳으로 갈 수 있습니다. 당신은 여전히 ​​거기에 도착할 것이고, 당신이 빠른 로켓 비행기를 가지고 있다면, 당신은 걸린 시간을 알지 못할 수도 있지만 낭비이며 시간이 더 오래 걸립니다.
— jbindel

1
myInteger가 null 인 경우 NPE가되는 경우는 어떻습니까?
— Wizzard

-4

이 방법으로 할 수 있습니다 :

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

5
당신은 할 수 있지만 왜 하시겠습니까? 이미 받아 들여진 답변에 훨씬 더 나은 해결책이 제안됩니다.
— Colin

정수 수학을 수행하기 위해 문자열을 만들면 계산하는 것보다 많은 CPU 사이클이 낭비됩니다.
— jbindel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.