아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
올리브영 favicon올리브영

정확한 돈 계산? BigDecimal이 답!

by DD
2023-10-20
2년 전
조회수 11

자바에서 기본 실수형 사용 시 부동소수점 방식으로 인해 정확한 계산이 어려움

BigDecimal을 사용하여 정밀한 십진수 계산을 가능하게 함

정산 시스템과 같이 정확한 금액 계산이 필요한 곳에서 BigDecimal 사용 권장

부동소수점의 원리: 2진수 표현의 한계

자바의 기본 실수형은 2진수 기반으로 숫자를 표현하며, 0.1과 같은 10진수를 정확히 표현할 수 없다. 따라서 근사값을 사용하게 되어 오차가 발생한다. 구체적으로 부호, 지수, 가수를 사용하여 실수를 표현하며, 이 과정에서 정밀도 손실이 발생한다.

BigDecimal vs. double: 정확성 vs. 성능

BigDecimal은 내부적으로 10진수를 사용하여 정확한 계산을 보장한다. 반면, double은 속도가 빠르지만 정밀도 문제가 있다. 따라서 정산 시스템과 같이 정확한 계산이 필요한 경우 을 사용하고, 성능이 중요한 경우에는 사용을 고려해야 한다.

BigDecimal
double

BigDecimal 활용 팁: equals()와 compareTo()

BigDecimal 사용 시 equals()는 소수점 자릿수까지 비교하므로 주의해야 한다. 따라서 compareTo()를 사용하여 소수점 자릿수를 무시하고 값을 비교하는 것이 좋다. 구체적으로 add(), subtract(), multiply(), divide() 등의 메서드를 활용하여 정확한 계산을 수행해야 한다.

부동소수점 이야기
중급
아키텍처
Java
BigDecimal
Backend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

JFR(Java Flight Recording)으로 자바(Java) 성능 병목을 찾아내고 5배 향상시키다!

레딧 로고

Java 성능의 새 지평, Project Valhalla JDK 28에 상륙!

해커뉴스 로고

Ruby, Java, TypeScript, 어떤 언어가 승자일까?

레딧 로고

자바(Java)의 지역 변수 선언, 패턴 매칭으로 더욱 강력해진다!

레딧 로고

Java, Value Classes 도입으로 성능 개선 기대!

레딧 로고

Netflix, ArchUnit 기반 Nebula ArchRules로 대규모 Java 프로젝트 아키텍처 관리

넷플릭스 로고
올리브영 favicon올리브영
중급
아키텍처
Java
BigDecimal
Backend

관련 추천 글

JFR(Java Flight Recording)으로 자바(Java) 성능 병목을 찾아내고 5배 향상시키다!

레딧 로고

Java 성능의 새 지평, Project Valhalla JDK 28에 상륙!

해커뉴스 로고

Ruby, Java, TypeScript, 어떤 언어가 승자일까?

레딧 로고