본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다.
선결론
- 정확한 결과가 필요한 계산에는 float나 double을 피하고, BigDecimal이나 int/long을 사용하라
float와 doble의 문제점
- float와 doble 타입은 과학과 공학 계산용으로, 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 빠르게 정밀한 근사치로 계산하도록 설계되었다
- 따라서 float와 double은 정확한 계산, 특히 금융과 관련된 계산에 적합하지 않다
해결방법
1) BigDecimal
- 장점
- 범위가 크다
- 소수점을 직접 관리하지 않아도 된다
- 단점
- 기본 타입에 비해 쓰기가 불편하다
- 훨씬 느리다
2) int 혹은 long
- 장점
- 사용하기가 간편하다
- 성능이 뛰어나다
- 단점
- BigDecimal에 비해 범위가 좁다
- 소수점을 직접 관리해야 한다
3) 결론
- 소수점 추적을 시스템에 맡긴다 / 코딩 시의 불편함이나 성능 저하를 감수한다 / 숫자가 너무 크다 → BigDecimal
- 소수점을 직접 추적할 수 있다 / 성능이 중요하다 / 숫자가 너무 크지 않다
- 숫자를 아홉 자리 십진수로 표현할 수 있다 → int
- 숫자를 열여덟 자리 십진수료 표현할 수 있다 → long
'책 > Effective Java' 카테고리의 다른 글
[이펙티브 자바] 아이템 62: 다른 작업이 적절하다면 문자열 사용을 피하라 (0) | 2022.07.07 |
---|---|
[이펙티브 자바] 아이템 61: 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2022.07.06 |
[이펙티브 자바] 아이템 59: 라이브러리를 익히고 사용하라 (0) | 2022.07.01 |
[이펙티브 자바] 아이템 58: 전통적인 for문보다는 for-each문을 사용하라 (0) | 2022.06.30 |
[이펙티브 자바] 아이템 57: 지역변수의 범위를 최소화하라 (0) | 2022.06.29 |