java long보다 큰 수 다루기(BigInteger)

Lee kyu min·2024년 3월 31일

Java study

목록 보기
40/41
  • 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));
    }
}

0개의 댓글