자바/++

[Java] BigInteger (큰 숫자 다루기)

backend dev 2022. 12. 14.

BigInteger를 사용해야 하는 이유

4바이트와 8바이트 자료형의 수 범위

int나 long과 같은 자료의 범위가 다음과 같다. 저 범위를 넘어서면 모두 0으로 출력된다.

 

알고리즘 문제를 풀다 팩토리얼 문제나, 조합 문제에서 큰 수를 다뤄야 할때가 있다. (최악의 경우에 대비하여)

동적프로그래밍으로 해결해도 되지만 BigInteger의 사용도 답일때가 있다.

 

또는 프로그램 개발에서 특히 돈과 관련된 개발에서는 항상 최악의 상황을 생각해야하므로 

무한의 정수가 들어갈 수 있는  BigInteger 클래스를 활용하는것이 좋다.

 

BigInteger는 문자열 형태로 이루어져 있어 숫자의 범위가 무한하기 때문에 어떤 숫자라도 담을 수 있다.

 

 

 

BigInteger 사용법

BigInteger 생성 및 초기화

BigInteger를 초기화하려면 문자열을 이용해야한다 -> BigInteger가 문자열로 되어있기 때문이다.

BigInteger a = new BigInteger("1000");
bw.write(a.toString());

 

또는 다음과 같이 숫자값을 받아서 BigInteger 객체로 생성할 수 있다.

.valueOf()

int number = 10000;
BigInteger a = BigInteger.valueOf(number);
bw.write(a.toString());

 

BigInteger 연산

BigInteger는 문자열이기때문에 사칙연산이 안된다. 그래서 BigInteger 내부에있는 연산자를 이용해서 사칙연산과 나머지계산을 진행할 수 있다.

int number = 10000;
BigInteger a = BigInteger.valueOf(number);
BigInteger b = new BigInteger("1000");

bw.write("덧셈" + a.add(b)+"\n");
bw.write("뺄셈" + a.subtract(b)+"\n");
bw.write("곱셈" + a.multiply(b)+"\n");
bw.write("나눗셈" + a.divide(b)+"\n");
bw.write("나머지계산"+a.remainder(b)+"\n");

 

 

 

CompareTo로 비교가능

a 가 1만 ,b가 1000 일때 결과는 1이다.

a가 b보다 크니까 

bw.write("비교 " + a.compareTo(b));

 

 

 

 

예제

https://keeeeeepgoing.tistory.com/94

 

'자바 > ++' 카테고리의 다른 글

repeat로 문자열 반복해서 이어붙이기  (0) 2023.05.17
[Java] 두 배열 비교하기  (0) 2022.12.27
[Java] compareTo()  (0) 2022.12.05
[Java] 람다 [미완성]  (0) 2022.12.05
[Java] Comparator , Comparable , 익명객체(클래스)  (0) 2022.12.04

댓글