Skip to content
Sanghyuk Jung edited this page Mar 4, 2022 · 3 revisions

IEEE-754 부동소수점 표준에 의해 내부적으로 부동소수점 자료형은 2진수로 저장되는데, 이 방식으로는 십진수 0.1은 이진수로는 정확하게 떨어지도록 표현할 수 없다.

보다 자세한 설명은 https://ko.wikipedia.org/wiki/IEEE_754 을 참조

성적 계산값이 들어가는 컬럼의 데이터 타입을 Decimal같은걸 안 쓰고 double써서 생겼던 장애

정성학님이 조사하신 내용

  1. 자바 타입 더 찾아보기 (Bigdecimal and java money)
  • 자바 머니
  • 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)과, 퍼포먼스에서 단점이있다.
  1. Bigdecimal 써야하는 이유

Clone this wiki locally