- long형(2^63, 약 10^19에 가까운 수)보다 더 큰 수를 다뤄야 하는 경우 BigInteger클래스를 사용
1. BigInteger
- 문자열형태로 이루어져 숫자의 범위가 무한하여 어떠한 숫자도 담을 수 있는 클래스
- 문자열이기에 일반 +, -, *, /, %등을 사용할 수 없다
- BigInteger클래스 내 숫자를 계산하기 위해선 내부의 메서드를 사용해야 한다
2. 사용법
1) 선언
BigInteger bi = new BigInteger("숫자");
2) 메서드
(1) 사칙연산
- add() : 덧셈
- subtract() : 뺄셈
- multiply() : 곱셈
- divide() : 나눗셈(/)
- remainder() : 나머지(%)
ex)
BigInteger bi1 = new BigInteger("20");
BigInteger bi2 = new BigInteger("10");
bi1.add(bi2); // 덧셈, 값 : 30
bi1.subtract(bi2); // 뺄셈, 값 : 10
bi1.multiply(bi2); // 곱셈, 값 : 200
bi1.divide(bi2); //나눗셈(/) , 값 : 2
bi1. remainder(bi2); //나눗셈(%), 값 : 0
(2) 형변환
- valueOf() : 자료형 -> BigInteger
- intValue() : BigInteger -> int
- longValue() : BigInteger -> long
- floatValue() : BigInteger -> float
- doubleValue() : BigInteger -> double
- String() : BigInteger -> String
ex)
BigInteger bi = BigInteger.valueOf(10); //int -> BigIntger
int int_bi = bi.intValue(); //BigIntger -> int
long long_bi = bi.longValue(); //BigIntger -> long
float float_bi = bi.floatValue(); //BigIntger -> float
double double_bi = bi.doubleValue(); //BigIntger -> double
String String_bi = bi.toString(); //BigIntger -> String
3) 예제(백준 1271번 문제)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
BigInteger n = new BigInteger(str[0]);
BigInteger m = new BigInteger(str[1]);
System.out.println(n.divide(m));
System.out.println(n.remainder(m));
}
}