본문 바로가기

Java

[Java] BigInteger

자바에서 long의 범위를 벗어나는 정수를 다루고 싶을 경우에는 java.math 패키지 안에 있는 BigInteger 클래스를 이용하면 된다. BigInteger는 생성자 파라미터로 String을 받으며 수들의 연산은 메서드를 이용한다.

아래는 BigInteger 클래스의 기본적인 사칙연산 메서드들을 정리해 둔 표이다.

 

BigInteger 

메서드 설명
BigInteger add (BigInteger val) 덧셈을 한 뒤 BigInteger 타입으로 반환한다.
BigInteger subtract (BigInteger val) 뺄셈을 한 뒤 BigInteger 타입으로 반환한다.
BigInteger multiply (BigInteger val) 곱셈을 한 뒤 BigInteger 타입으로 반환한다. 
BigInteger divide (BigInteger val) 나눗셈을 한 뒤 몫을 BigInteger 타입으로 반환한다.
BigInteger remainder(BigInteger val) 나눗셈을 한 뒤 나머지를 BigInteger 타입으로 반환한다.
int compareTo(BigInteger val) 메서드를 호출한 쪽이 크면 1, 매개변수로 받은 값이 크면 -1, 같으면 0을 반환
BigInteger gcd(BigInteger val) 최대 공약수를 반환한다. 
int intvalueExact()   int의 범위를 벗어나지 않으면 반환하고 벗아나면 ArithmeticException을 발생시킨다.
BigInteger[] DivideAndRemainder( BigInteger  val) 객체를 val로 나눈 몫과 나머지를 BigInteger배열로 리턴한다.
index0에는 몫이, 1에는 나머지가 있다.
val이 0이면 ArithmeticException을 throw한다.  

 

BigInteger 타입을 다른 타입들로 변환하는 메서드는 .[타입명]Value(); 이다.

 

import java.math.BigInteger;

public class Test {
	public static void main(String[] args) {
		BigInteger bi = new BigInteger("10737418246");
		try {
			int val = bi.intValueExact();
			System.out.println(val);
		} catch (ArithmeticException e) {
			BigInteger[] arr = bi.divideAndRemainder(new BigInteger("2147483647"));
			long quotient = arr[0].longValue(); // 몫
			long remainder = arr[1].longValue(); // 나머지
			System.err.println("int의 범위를 넘어갔습니다.");
			System.out.println("객체를 int의 max값으로 나눈 몫: " + quotient);
			System.out.println("객체를 int의 max값으로 나눈 나머지: " + remainder);
		}
	}
}

 

 

참고

'Java' 카테고리의 다른 글

[Java] static 초기화 블록  (0) 2023.07.17
[Java] 정규표현식  (0) 2023.06.27
[Java] java.util.Objects를 이용한 NPE방어  (0) 2023.06.23
[Java] Wrapper Class  (0) 2023.06.21
[자바] 쉬프트 연산자  (0) 2023.06.15