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
반응형