Programming-[Backend]/Django
[TIL] FloatField, DecimalField 차이점 / 위경도 표시 소수점과 거리값
컴퓨터 탐험가 찰리
2022. 12. 14. 21:09
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) 티스토리 - 코딩기록
728x90
반응형