본문 바로가기
관리자

Programming-[Backend]/Django

[TIL] FloatField, DecimalField 차이점 / 위경도 표시 소수점과 거리값

728x90
반응형

Django의 Serializer에서 정의하는, 소수점 값을 사용할 수 있는 필드는 FloatField와 DecimalField가 있다.

 

결론적으로는 아래 참조에 나와있듯이 해당 필드를 이용해서 계산이 필요한 경우는 DecimalField를 사용하는 것이 좋다.

 

DecimalField

- str 기반이다. '126.123541231'로 표시된다. coerce_to_string = False로 옵션을 적용하면 decimal 타입으로 표시할 수 있다.

- max_length, decimal_places 옵션을 통해 최대 길이와 소수점 자리수를 지정할 수 있다.

 

기타 상세한 내용은 참조 링크

ref) 스택오버플로우

https://stackoverflow.com/questions/2569015/django-floatfield-or-decimalfield-for-currency

 

 

 

 

기반 지식

-> 컴퓨터의 부동소수점 표현 한계 때문이다.

0.5 = 1/2 = 0.1(이진수)

0.75 = 1/2 + 1/4 = 0.11(이진수)

로 표시가 가능하나,

0.1 = 1/2 + 1/16 + ..... 으로 무한 소수점이라 이진수로 표시할 수 없게된다.

 

prev) 2. 컴퓨터 내부의 언어 체계 - 비트와 실수, 텍스트 표현

 

 

 


 

 

 

 

 

위경도 표시 소수점

 

위도와 경도는 보통 소수 6자리까지 나타내고 소수 13자리까지 나타낼 수 있다.

 

  • 첫 번째 소수점 자리는 최대 11.1km
  • 두 번째 소수점 자리는 1.1 km
  • 세 번째 소수점 자리는 110m
  • 네 번째 소수점 자리는 11m
  • 다섯 번째 소수점 자리는 1.1 m
  • 여섯 번째 소수점 자리는 0.11 m

나타낸다.

 

 

ref) 티스토리 - 코딩기록

https://se-jung-h.tistory.com/entry/%EC%9E%90%EB%B0%94intelij-%EC%A2%8C%ED%91%9C%EC%9C%84%EB%8F%84%EA%B2%BD%EB%8F%84%EB%A1%9C-%EC%8B%A4%EC%A0%9C-%EA%B1%B0%EB%A6%AC-%EA%B5%AC%ED%95%98%EA%B8%B0

 

 

728x90
반응형