정수에서 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.