본문 바로가기
└ JAVA

[JAVA] 무한대 정수 BigInteger 사용하기

by 짜장이누나 2016. 4. 11.







큰 수를 조작하는 연습문제를 풀던 중...

long형의 범위가 벗어나 오류가 생겨버렸다!!!!!

헉 long형보다 큰 자료형이 뭐가 있을까... 찾다가 BigInteger 발견!!






1. BigInteger의 정의와 범위



BigInteger에 대해 알아보기 전에 먼저 숫자 자료형의 범위를 복습해보자.


 구분

자료형 

크기 

최소값 

최대

 정수

 byte

 8 비트

 -128

 127

 short

 16 비트

 -32,768

 32,767

 int

 32 비트

 -2,147,483,648

 2,147,483,647

 long

 64 비트

 -9,223,372,036,854,775,808

 9,223,372,036,854,775,807

 부동 소수점

 float 

 32 비트

 7개의 유효숫자를 가지며,

 -3.4E+38의 근사값

 7개의 유효숫자를 가지며,

 3.4E+38의 근사값

 double

 64 비트

 15개의 유효숫자를 가지며,

 -1.7E+308의 근사값

 15개의 유효숫자를 가지며,

1.7E+308의 근사값




자 그럼, 이제 내가 궁금한 BigInteger의 범위는?

  BigInteger의 범위는 "무한대" 이다.




그렇다면, 도대체 BigInteger란 무엇인가?

자바 API에서 보면 이렇게 정의되어 있다.


BigInteger: Immutable arbitrary-precision integers. (불변한 임의의 정말한 정수) 


쉽게 말해서 무한대 수 라는 의미이다.








2. BigInteger의 변수와 메소드



BigInteger 클래스의 변수는 세가지가 존재한다.

  • ZERO
  • ONE
  • TEN




다음으로 메소드는 많은 것들이 존재하지만 주요 연산 메소드만 소개하겠다.

(나머지는 자바API 가서 확인!)

  • add(Biginteger val)        // 더하기
  • subtract(Biginteger val)  // 빼기
  • mutiply(Biginteger val)   // 곱하기 
  • devide(Biginteger val)    // 나누기
  • equals(Object x)           // 값이 같은지 비교








3. BigInteger 사용하기



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void UseBigInteger() {
        
    int i = 5;
    BigInteger bigNum1 = BigInteger.ZERO;  // 0
    BigInteger bigNum2 = BigInteger.ONE;   // 1
    BigInteger bigNum3 = BigInteger.TEN;   // 10
    BigInteger afterBigNum;
 
 
    // 사칙연산
    afterBigNum = bigNum1.add(bigNum3);        // 더하기
    afterBigNum = bigNum3.subtract(bigNum2);    // 빼기
    afterBigNum = bigNum2.multiply(bigNum3);    // 곱하기
    afterBigNum = bigNum3.divide(bigNum2);        // 나누기
 
 
    // 변수와 사칙연산
    afterBigNum = bigNum1.add(BigInteger.valueOf(i));        // 더하기
    afterBigNum = bigNum1.subtract(BigInteger.valueOf(i));    // 빼기
    afterBigNum = bigNum1.multiply(BigInteger.valueOf(i));    // 곱하기
    afterBigNum = bigNum1.divide(BigInteger.valueOf(i));    // 나누기
}
cs





출처: JAVA API문서 ( Class java.math.BigInteger )