[Java] BigInteger, BigDecimal

이준영·2023년 11월 24일
0

🟫 Java

목록 보기
11/21
post-thumbnail

BigInteger, BigDecimal

java.math.BigInteger
java.math.BigDecimal

  • 위의 클래스들은 String 과 같이 값의 변경이 불가능한 immutable 클래스 입니다.

BigInteger, BigDecimal 클래스는 long 클래스로도 표현할 수 없이 큰 수를 표현하거나, double 연산에서 발생하는 사소한 오차도 허용하지 않기 위해 사용되는 클래스 입니다.


BigInteger 연산

BigInteger big1 = new BigInteger("100000000000000000000");
BigInteger big2 = new BigInteger("-99999999999999999999");

BigInteger r1 = big1.add(big2);
System.out.println(r1);

출력결과
1

컴퓨터가 표현할 수 있는 수보다 큰 수를 다루기 때문에 스트링으로 인자를 전달합니다.

또한 immutable 클래스 이기 때문에 인스턴스의 값이 변하지 않고 연산 결과를 다른 인스턴스에 저장하게 됩니다.


intValueExact()

BigInteger 인스턴스에 저장된 값을 intValueExact() 메소드를 통해 int형 정수로 반환할 수 있습니다.

int num = r1.intValueExact();

오차없는 실수 표현 위한 BigDecimal 연산

BigDecimal d1 = new BigDecimal("1.6");

BigDecimal에 값을 전달할 때 1.6에 ""를 붙여 전달함으로써 사소한 오차조차 줄일 수 있습니다.
컴퓨터가 1.6을 표현하려면 1.6과 아주 근사하지만 작은 오차를 가진 수로 표현하게 되는데, BigDecimal에 1.6을 그대로 전달하면 전달되는 과정에서 이 작은 오차가 포함된 상태로 BigDecimal에 저장되게 됩니다. 따라서 이러한 오차도 줄이기 위해 "1.6"으로 값을 전달하는 것 입니다.

profile
작은 걸음이라도 꾸준히

0개의 댓글