[Java] BigInteger

gyeol·4일 전

자바

목록 보기
24/24
post-thumbnail

BigInteger

BigInteger는 자바에서 아주 큰 정수를 다루기 위한 클래스이다. 일반적인 정수 자료형이 표현할 수 있는 범위를 넘어 값을 저장하고 계산할 수 있도록 설계되었다.

자바의 일반 정수 타입은 표현 가능한 범위가 정해져 있다.

타입최대 범위
int약 ±21억
long약 ±9 × 10¹⁸

하지만 계산 과정에서 더 큰 수가 필요할 때가 있다. 이때 최대 범위는 넘어가게 되면 오버플로가 발생해 잘못된 숫자가 저장되기에 제한없이 큰 정수를 다룰 수 있는 BigInteger와 같은 클래스를 사용하는 것이다.

특징

  • 기본 자료형이 아니기에 new로 생성
  • 크기 제한 없음
  • 정수만 표현함. 실수의 경우 BigDecimal 사용
  • 연산은 메서드로 수행함. *, +와 같은 연산 안됨

사용법

  • 생성
BigInteger a = new BigInteger("123456789123456789");
BigInteger b = BigInteger.valueOf(100);
  • 덧셈
BigInteger c = a.add(b);
  • 뺄셈
BigInteger c = a.subtract(b);
  • 곱셈
BigInteger c = a.multiply(b);
  • 거듭제곱
BigInteger c = BigInteger.valueOf(2).pow(100);
  • 비교
a.compareTo(b);
  • 문자열 변환
String str = a.toString();

왜 기본 연산자를 사용하지 못하는가?

+. -, *, / 와 같은 연산자는 기본 자료형에만 적용되는 연산자이기 때문에 BigInteger는 메서드 방식으로 계산해야 한다.

연산BigInteger 메서드
+add()
-subtract()
*multiply()
/divide()
%mod()
profile
공부 기록 공간 '◡'

0개의 댓글