컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post 억(億), 조(兆) 단위보다 큰 숫자 읽기, 경(京) 단위 이상 읽는 법 [수사(數詞); ...만,억,조,경,해,자,양,구,간,정,재,극,항하사,아승기,나유타,불가사의,무량대수;Larg...Java/자바] 정수(byte, short, char, int, long) MIN MAX ...Python/파이썬] 실행시 옵션으로, 숫자 입력 받기 예제, Input Number ar...Python/파이썬] 숫자 여부 판단 함수, 실수/정수인지 문자인지; isNumber is...Python/파이썬] sys.argv 명령행 옵션 구하기(인수;아규먼트;매개변수;Comma...Python/파이썬] 팩토리얼의 자연 로그 구하기 함수, Log Factorial; lnF...Excel/엑셀] 팩토리얼(Factorial) 값 구하기 함수, 계승 계산 하는 법윈도우 계산기] 팩토리얼(Factorial) 값 구하기, 계승 계산 하는 법; Calc W...Python/파이썬] 팩토리얼 구하기(Factorial 값 계산) 소스; 1~100 (0~...

Java/자바] 거대 무한 정수 사칙연산, BigInteger 클래스 사용 법; Big Int Plus Minus

Thursday, January 18, 2007

자바의 64비트 정수형인 long 형으로도 겨우 9223372036854775807 (구백이십이경...)까지의 숫자만 나타낼 수 있습니다.

그 이상의 정수가 필요하다면 BigInteger 클래스를 사용해야 합니다. BigInteger 는 숫자의 크기에 제한이 없습니다. 사실상 무한대의 정수를 저장할 수 있습니다.

그런데 BigInteger 는 기본 자료형과 달리 사칙연산이 + - / * 이런 기호로 되지는 않고

operator + cannot be applied to java.math.BigInteger,java.math.BigInteger (플러스 연산자를 BigInteger에서 사용할 수 없음) 등의 에러가 납니다.


그래서 다음과 같은 메소드(함수)를 사용하여 연산을 해야 합니다.

더하기 : add()
빼기   : subtract()
곱하기 : multiply()
나누기 : divide()



BigInteger 가감승제(더하기 빼기 곱하기 나누기) 예제


파일명: Foo.java
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
import java.math.BigInteger;

public class Foo {
  public static void main(String[] args) {

  // 100자리 정수 정의
  BigInteger big = new BigInteger("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");

  // 위의 100자리 정수 출력
  System.out.println(big);
  System.out.println(); // 줄바꿈




  // 더하기 1 (BigInteger.ONE 은 1 이라는 상수)
  big = big.add(BigInteger.ONE);
  System.out.println(big);
  System.out.println(); // 줄바꿈

  // 더하기 2
  big = big.add(BigInteger.valueOf(2));
  System.out.println(big);
  System.out.println(); // 줄바꿈

  // 빼기 3
  big = big.subtract(BigInteger.valueOf(3));
  System.out.println(big);
  System.out.println(); // 줄바꿈

  // 곱하기 2
  big = big.multiply(BigInteger.valueOf(2));
  System.out.println(big);
  System.out.println(); // 줄바꿈

  // 나누기 2 (실수가 아닌 항상 BigInteger 정수를 반환)
  big = big.divide(BigInteger.valueOf(2));
  System.out.println(big);
  System.out.println(); // 줄바꿈


  // 곱하기 0 (BigInteger.ZERO 는 0 이라는 상수)
  big = big.multiply(BigInteger.ZERO);
  System.out.println(big);
  System.out.println(); // 줄바꿈

  }
}


예를 들어 더하기 2를 할 때
big = big.add(2);
이렇게 2를 int 로 넣어주면 안되고

big = big.add(BigInteger.valueOf(2));
이렇게 2를 BigInteger 로 변환하여야 합니다.


컴파일 및 실행 결과 화면:
D:\Z>javac Foo.java && java Foo
10000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000

10000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000001

10000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000003

10000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000

20000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000

10000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000

0


D:\Z>

너무 큰 숫자라서 화면에 나타내는 것도 쉽지가 않습니다.



BigInteger 로 팩토리얼 구하기


BigInteger 를 사용하여, 팩토리얼을 구하는 좀더 실용적인 예제입니다. ▶▶ Java/자바] 팩토리얼 구하기(Factorial 값 계산) 소스; 1~100 (0~100), n 계승 [수학



거대 정수 크기 비교하기: ▶▶ Java/자바] BigInteger 형 정수 숫자, if문으로 크기 비교; Compare Big Int

자바 강좌와 각종 예제

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top