기록하는 습관을 들이자

BigDecimal 클래스 - 오차 없는 부동 소수점 연산을 위한 클래스 본문

알고리즘/Java

BigDecimal 클래스 - 오차 없는 부동 소수점 연산을 위한 클래스

myeongmy 2020. 4. 15. 20:31
반응형

 

 

참고 2018 카카오 블라인드 코딩테스트_추석 트래픽

 

카카오 추석 트래픽 문제에서 double형 변수끼리 덧셈, 뺄셈 연산을 하는데 부동 소수점 때문에 연산에 오차가 생겨 자꾸 에러가 났다. 이러한 경우에는 오차 없는 연산을 위해 BigDecimal 연산을 사용한다. 해당 클래스를 정리해보자.

 

 

BigDecimal 클래스

 

 

라이브러리

import java.math.BigDecimal;

 

선언 방법

BigDecimal bd = new BigDecimal("4.17");
BigDecimal bd1 = BigDecimal.valueOf(0.4);

//BigDecimal 선언 시에는 무조건 String으로 선언해야함!

 

연산 방법

BigDecimal 연산 시에는 산술 연산자가 아닌

add(더하기), subtract(빼기), multiply(곱하기), divide(나누기) 메소드를 이용한다!

BigDecimal bd = new BigDecimal("4.17");
BigDecimal bd1 = new BigDecimal("6");
BigDecimal on = new BigDecimal("0.001");

System.out.println(bd.add(bd1));
System.out.println(bd1.multiply(on));
System.out.println(bd.add(bd1).divide(on));

//연산 시에는 무조건 BigDecimal 타입끼리만 연산 가능!

 

크기 비교

크기 비교 시에는 비교 연산자가 아닌 compareTo 메소드를 이용한다!

BigDecimal bd = new BigDecimal("4.17");
BigDecimal bd1 = new BigDecimal("6");
BigDecimal bd2 = new BigDecimal("6");


System.out.println(bd.compareTo(bd1));     //-1
System.out.println(bd1.compareTo(bd));     //1
System.out.println(bd1.compareTo(bd2));    //0

 

부동 소수점 오차 없는 실수 연산을 위한 BigDecimal 클래스였습니다.

반응형
Comments