본문 바로가기
Java

[Java] 큰 숫자(정수) 다루기(BigInteger 클래스 사용)

by jn4624 2022. 7. 20.
반응형

1. BigInteger를 사용해야 하는 이유

int 타입의 메모리 크기는 4byte로 표현할 수 있는 -2,147,483,648 ~ 2,147,483,647까지의 범위를 가졌고,

long 타입의 메모리 크기는 8byte로 표현할 수 있는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807까지의 범위를 가졌다.

 

그 범위를 넘어서게 되면 모두 0으로 출력이 되며,

숫자의 범위가 int 타입의 범위와 long 타입의 범위를 넘는 경우가 잘 없겠지만 항상 최악의 상황을 고려해야 하므로

무한 정수가 들어갈 수 있는 가능성이 존재한다면 BigInteger 클래스를 활용하는 것이 효율적이다.

 

BigInteger 클래스는 문자열 형태로 이루어져 있어 숫자의 범위가 무한하기에 어떠한 숫자든 담을 수 있다.

 

2. BigInteger 사용법

a. 선언

BigInteger bigInteger = new BigInteger("10");

BigInteger 클래스는 java.math 패키지 안에 포함되어 있으며 선언 방법은 위와 같다.

특이한 점은 BigInteger 클래스는 문자열 인자로 초기화를 하여야 한다는 점인데 이는 BigInteger 클래스가 문자열 형태로 이루어져 있기 때문이다.

 

b. 계산

BigInteger bigInteger1 = new BigInteger("10");
BigInteger bigInteger2 = new BigInteger("10");

System.out.println("+ : " + bigInteger1.add(bigInteger2));
System.out.println("- : " + bigInteger1.subtract(bigInteger2));
System.out.println("* : " + bigInteger1.multiply(bigInteger2));
System.out.println("/ : " + bigInteger1.divide(bigInteger2));
System.out.println("% : " + bigInteger1.remainder(bigInteger2));

BigInteger 클래스는 문자열 형태로 이루어져 있기 때문에 사칙연산이 불가능하다.

따라서 사칙연산을 하기 위해서는 BigInteger 클래스에서 제공하는 메소드를 사용해야 한다.

 

c. 형변환

BigInteger bigInteger = new BigInteger("10");

int intNum = bigInteger.intValue();
long longNum = bigInteger.longValue();
float floatNum = bigInteger.floatValue();
double doubleNum = bigInteger.doubleValue();
String StringNum = bigInteger.toString();

BigInteger 클래스를 기본 자료형으로 형변환하기 위해서는 BigInteger 클래스에서 제공하는 메소드를 통해 변환할 수 있다.

 

 

🙏 참조 ::

https://coding-factory.tistory.com/605

반응형