반응형
Notice
Hot Posts
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ai/bigdata
- 삼성SW역량테스트
- Java
- level2
- 카카오
- 시뮬레이션
- BOJ
- 삼성 SW역량테스트 기출
- 마곡속눈썹연장
- leetcode
- 직무면접
- OS
- 리트코드
- 1차면접
- 운영체제
- 삼성
- 딥러닝
- 등촌동속눈썹연장
- 등촌동속눈썹펌
- 수학
- 다시보기
- 백준
- 포스코
- 프로그래머스
- 추석트래픽
- 마곡속눈썹펌
- 투포인터
- 코딩테스트
- 알고리즘
- 정렬
Archives
- Today
- Total
기록하는 습관을 들이자
BigDecimal 클래스 - 오차 없는 부동 소수점 연산을 위한 클래스 본문
반응형
참고 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 클래스였습니다.
반응형
'알고리즘 > Java' 카테고리의 다른 글
내가 정리하는 코딩테스트 문제 유형 별 풀이 방법 (8) | 2020.09.09 |
---|---|
[알고리즘] 투 포인터(Two-Pointer Algorithm) 알고리즘 (0) | 2020.05.06 |
Java HashMap 클래스와 메소드 (0) | 2020.04.06 |
알고리즘 구현 시 자주 등장하는 유형(개념) - JAVA (0) | 2020.04.05 |
Java 정렬(Sorting) (0) | 2020.04.05 |
Comments