java long의 범위

  • -9223372036854775808 ~ 9223372036854775807



java long보다 큰 수는 어떻게 해야하는가?

  • java의 BigInteger 사용



BigInteger란?

  • java.math에 import하여야 사용이 가능

  • Immutable arbitary-precision integers. = 무한대의 불변한 정수 (String도 Immutable함)

    • (주의) Immutable의 경우, 객체 연산시 새로운 객체가 생김
  • 무한대의 숫자 표시 가능



선언하기

  • 선언시 new BigInteger(String);
import java.math.BigIntger;

// 생성1. String
BigInteger bi1 = new BigInteger("1"); // 1 생성

// 생성2. 클래스 변수 3가지(ZERO, ONE, TEN)
BigInteger bi2 = new BigInteger.ZERO; // 0
BigInteger bi3 = new BigInteger.ONE; // 1
BigInteger bi4 = new BigInteger.TEN; // 10

// 그외는 API 문서 확인



연산하기

  • BigInteger끼리의 사칙연산
BigInteger sunnybi;

BigInteger bi1 = new BigInteger.ZERO;
BigInteger bi2 = new BigInteger("0");

sunnybi = bi1.add(bi2); // 더하기
sunnybi = bi1.subtract(bi2); // 빼기
sunnybi = bi1.multiply(bi2); // 곱하기
sunnybi = bi1.divide(bi2); // 나누기
  • int(변수)와 사칙 연산
BigInteger sunnybi;

BigInteger bi1 = new BigInteger.ZERO;
int sunnyi = 2;

sunnybi = bi.add(BigInteger.valueOf(sunnyi)); // 더하기
sunnybi = bi.add(BigInteger.subtract(sunnyi)); // 빼기
sunnybi = bi.add(BigInteger.multiply(sunnyi)); // 곱하기
sunnybi = bi.add(BigInteger.divide(sunnyi)); // 나누기

(주의) BigInteger연산은 항상 BigInteger 타입으로 반환됨

int와 연산시, int를 BigInteger로 타입 변경 후 연산