[java] BigInteger

JH·2024년 4월 15일

java

목록 보기
19/21

BigInteger의 표현 범위

BigInteger는 int와 long이 표현하는 범위보다 더 큰 범위의 숫자를 저장할 수 있습니다.

  • int (4 byte) : -2,147,483,648 ~ 2,147,483,647
  • long (8 byte) : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • BigInteger (70 byte ~) : 무한 (Infinity).

BigInteger의 선언 및 연산

  • new BigInteger("54321") 처럼 생성자에 문자열로 된 숫자를 전달하여 BigInteger를 생성 및 초기화.
  • add(), multiply() 등의 함수를 이용하여 BigInteger 끼리 연산을 할 수 있고, 결과는 BigInteger로 리턴.

예시

import java.math.BigInteger;
public class Example {
    public static void main(String[]  args) {
        BigInteger  n1  = new BigInteger("54321");
        BigInteger  n2  = new BigInteger("12345");
        System.out.println("n1 + n2 = " +  n1.add(n2));
        System.out.println("n1 - n2 = " +  n1.subtract(n2));
        System.out.println("n1 * n2 = " +  n1.multiply(n2));
        System.out.println("n1 / n2 = " +  n1.divide(n2));
        System.out.println("n1 % n2 = " +  n1.remainder(n2));
    }
}

출력

n1 + n2 = 66666
n1 - n2 = 41976
n1 * n2 = 670592745
n1 / n2 = 4
n1 % n2 = 4941

BigInteger의 형변환

BigInteger는 아래와 같이 int, long, double 등의 기본 타입으로 변환할 수 있습니다.

예시

import java.math.BigInteger;
public class Example {
    public static void main(String[]  args) {
        BigInteger  n  = new BigInteger("54321");
        int  i  =  n.intValue();
        long  l  =  n.longValue();
        float  f  =  n.floatValue();
        double  d  =  n.doubleValue();
        String  s  =  n.toString();
    }
}

BigInteger의 크기 비교

BigInteger 객체끼리 크기 비교를 할 때 compareTo()를 사용할 수 있습니다.
n1.compareTo(n2)는 1, 0, -1을 리턴할 수 있으며 각각 아래와 같은 의미가 됩니다.

  • 1 : n1이 더 크다
  • 0 : n1과 n2가 같다
  • -1 : n2가 더 크다

예시

import java.math.BigInteger;
public class Example {
    public static void main(String[]  args) {
        BigInteger  n1  = new BigInteger("54321");
        BigInteger  n2  = new BigInteger("12345");
        BigInteger  n3  = new BigInteger("12345");
        System.out.println("n1.compareTo(n2) = " +  n1.compareTo(n2));
        System.out.println("n2.compareTo(n1) = " +  n2.compareTo(n1));
        System.out.println("n2.compareTo(n3) = " +  n2.compareTo(n3));
    }
}

출력

n1.compareTo(n2) = 1
n2.compareTo(n1) = -1
n2.compareTo(n3) = 0
profile
발전하는 백엔드 개발자

0개의 댓글