BigInteger를 사용해야 하는 이유
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 |
댓글