Engineering/Java
JAVA 에서 큰 숫자 표현
부스 boos
2013. 7. 18. 16:34
728x90
java 에서 primitive type 형 숫자들중 가장 큰 자릿수를 지원하는 Long 형이나 Double 형의 최대값은
Long.MAX_VALUE = +9,223,372,036,854,775,807
Double.MAX_VALUE = 1.79769313486231570e+308d
둘다 8바이트이고, 자릿수를 계산해보면 19, 20 자리 정도이다. 이런 자릿수보다 더 큰 숫자를 표현하려면 어떻게 해야할까.
java 에서 BigInteger(java.math.BigInteger) 를 사용하면 큰 숫자를 표현가능하다. 예를 들어 1 부터 100 까지 숫자를 차례로 곱해서 결과값을 구하는 프로그램은 다음과 같이 표현할 수 있다.
import java.math.BigInteger; public class BigInt { public static void main(String[] args) { BigInteger a = new BigInteger("1"); BigInteger b = new BigInteger("1"); int i = 0; for (i = 0; i < 100; i++) { a = a.add(BigInteger.ONE); b = b.multiply(a); } System.out.println("big is = " + b.toString()); System.out.println("long MAX_VALUE = " + Long.MAX_VALUE); System.out.println("double MAX_VALUE = " + Double.MAX_VALUE); } }
결과값은 160 자리까지 나온다.
big is = 9425947759838359420851623124482936749562312794702543768327889353416977599316221476503087861591808346911623490003549599583369706302603264000000000000000000000000
long MAX_VALUE = 9223372036854775807
double MAX_VALUE = 1.7976931348623157E308
참고로 다음은 java primitive type 을 간단하게 설명한 링크이다.