> For the complete documentation index, see [llms.txt](https://develop-footprint.gitbook.io/o/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://develop-footprint.gitbook.io/o/java/effective-java/9/item-60-float-double.md).

# item 60) 정확한 답이 필요하다면 float, double은 피하라

## float, double 사용 시 주의점

* float, double은 부동 소수 타입이다.
* 10의 음의 거듭제곱수(10^-2, ...)를 표현할 수 없는 구조이다.
* 정확한 결과가 필요하거나 금융 관련 계산을 할 때엔 사용하면 안 된다.

## 정확한 결과가 필요한 경우

* **BigDecimal, int, long**을 사용해야 한다.
* BigDecimal의 경우 기본타입보다 쓰기 불편하고, 성능이 느리다.
* int, long 타입의 경우 다룰수 있는 값의 크기가 제한되고, 소수점을 직접 관리해야 한다.
* 숫자를 아홉 자리 십진수로 표현할 수 있다면 int 사용하고, 열여덟자리 십진수로 표현할 수 있다면 long을 사용하고, 열여덟자리가 넘어가면 BigDecimal을 사용해야 한다.
