-
Notifications
You must be signed in to change notification settings - Fork 11
부동소수점
Sanghyuk Jung edited this page Mar 4, 2022
·
3 revisions
IEEE-754 부동소수점 표준에 의해 내부적으로 부동소수점 자료형은 2진수로 저장되는데, 이 방식으로는 십진수 0.1은 이진수로는 정확하게 떨어지도록 표현할 수 없다.
보다 자세한 설명은 https://ko.wikipedia.org/wiki/IEEE_754 을 참조
- 돈을 표기할 때는 왜 Double과 Float을 사용하지 않나요?
- https://dzone.com/articles/never-use-float-and-double-for-monetary-calculatio
성적 계산값이 들어가는 컬럼의 데이터 타입을 Decimal같은걸 안 쓰고 double써서 생겼던 장애
정성학님이 조사하신 내용
- 배민
- test 코드지만 계산엔 bigdecimal이 들어가고, 리턴값이 long이다
- http://woowabros.github.io/study/2018/03/01/spock-test.html
- 자바 타입 더 찾아보기 (Bigdecimal and java money)
-
자바 머니
- https://www.baeldung.com/java-money-and-currency (사용예제) -> 이건 moneta꺼
-
Bigdecimal이 무조건 정답일까? 라는 블로그글
- 결론 : 잘모르면 BigDecimal쓰고 더블로도 잘 쓸 수 있으면 잘 쓸 수 있는거 써라
- C++로 만들어진 많은 시스템도 돌아가고있다. (BigDecimal 안쓰고있음)
- BigDecimal syntax is an unnatural. (syntax가 자연스럽지않다.)
- BigDecimal uses more memory (메모리를 많이잡아먹는다)
- BigDecimal creates garbage (가비지를 많이 만든다)
- BigDecimal is much slower for most operations (there are exceptions) (대부분의 계산에서 느리다)
- 명확성(clarity)과, 퍼포먼스에서 단점이있다.
- Bigdecimal 써야하는 이유