JAVA/API

[자바] 실수의 오차를 없애주는 BigDecimal

챈박 2021. 3. 27. 21:50

실수의 연산은 오차가 따른다. 예를 들어 보자.

System.out.println(1.6+0.1);

1.6+0.1을 자바 이클립스에서 실행 할때 몇이 나올 것 같은가? 1.7? 아니다.

1.7000000000000002

정확한 1.7이 나오지 않고 소수점 뒤에 작은 오차가 발생한다. 컴퓨터는 실수를 표현할 때 부동소수점 방식을 사용하기 때문이다.

하지만 걱정하지마라 자바에는 이를 해결해줄 클래스가 존재한다. 바로 BigDecimal이라는 클래스이다.

이는 java.math패키지에 존재하기 때문에 import선언을 해줘야한다.

이제 BigDecimal 클래스를 사용해보자

import java.math.BigDecimal;

public class Main {

	public static void main(String[] args) {
		BigDecimal e1 = new BigDecimal("1.6"); // 객체생성 후 데이터입력 시 ""를 사용하여 문자열의 형태로 입력
		BigDecimal e2 = new BigDecimal("0.1");
		System.out.println(e1.add(e2));        //덧셈
		System.out.println(e1.subtract(e2));   //뺄셈
		System.out.println(e1.multiply(e2));   //곱셈
		System.out.println(e1.remainder(e2));  //나눗셈
	}
}
1.7
1.5
0.16
0.0

 

반응형