개념 창고/JAVA

[Java] BigInteger 사용 이유, 형변환, 두 수 비교

달마루 2022. 12. 21. 20:43
Type 범위
int -2,147,483,648 ~ 2,147,483,647
long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

int 와 long의 범위로 감당하기 힘든 경우 사용한다.
BigInteger은 문자열 형태여서 숫자의 범위가 무한하다.

그러나 BigInteger은 문자열이라 사칙연산이 안되기 때문에
BigIntger 내부의 숫자를 계산하기 위해서는 BigIntger 클래스 내부에 있는 메서드를 사용해야 한다.

        BigInteger bigNum1 = new BigInteger("100000000000");
        BigInteger bigNum2 = new BigInteger("1000000000000000");

        System.out.println("덧셈(+) :" + bigNum1.add(bigNum2));
        System.out.println("뺄셈(-) :" + bigNum1.subtract(bigNum2));
        System.out.println("곱셈(*) :" + bigNum1.multiply(bigNum2));
        System.out.println("나눗셈(/) :" + bigNum1.divide(bigNum2));
        System.out.println("나머지(%) :" + bigNum1.remainder(bigNum2));
        
        // 결과
        // 덧셈(+) :1000100000000000
        // 뺄셈(-) :-999900000000000
        // 곱셈(*) :100000000000000000000000000
        // 나눗셈(/) :0
        // 나머지(%) :100000000000

 

BigInteger 형 변환
기본 타입으로 형 변환시 아래와 같이 한다.

        BigInteger bigNum = BigInteger.valueOf(10000);
        //int -> BigIntger
        int int_bigNum = bigNum.intValue(); 
        //BigIntger -> int
        long long_bigNum = bigNum.longValue();
        //BigIntger -> long
        float float_bigNum = bigNum.floatValue();
        //BigIntger -> float
        double double_bigNum = bigNum.doubleValue();
        //BigIntger -> double
        String String_bigNum = bigNum.toString();
        //BigIntger -> String

 

BigInteger 두 수 비교
compareTo 메서드를 사용한다.
맞으면 0 틀리면 -1를 반환한다.

    public static void main(String[] args) {
        BigInteger bigNum1 = new BigInteger("100000000000");
        BigInteger bigNum2 = new BigInteger("1000000000000000");

        int compare = bigNum1.compareTo(bigNum2);
        System.out.println(compare);