장고에서 숫자와 관련된 작업을 하다 보면 반올림을 해야 할 때가 있습니다. views.py에서 사용할 수 있는 파이썬(python)의 반올림 round 함수 말고, 장고에 기본적으로 내장돼 있는 필터로써, 장고 템플릿에서 바로 사용할 수 있는 floatformat 필터에 대해 알아보겠습니다. flotformat 필터는 장고의 내장 필터이기 때문에 따로 로드를 해줄 필요가 없습니다. 빠른 이해를 위해 바로 flotformat 필터의 사용 예시를 들어보겠습니다.
인수 없이 사용할 경우 부동 소수점 숫자를 소수점 한 자리로 반올림합니다. (단, 표시할 소수 부분이 있는 경우에만 해당합니다.)
value | 템플릿 | 결과값 |
3.14159 | {{ value|floatformat }} | 3.1 |
3.00000 | {{ value|floatformat }} | 3 |
3.56789 | {{ value|floatformat }} | 3.6 |
인수 없이 float 형식을 사용하는 것은 -1 인수를 사용하여 float 형식을 사용하는 것과 같습니다.
숫자 정수 인수와 함께 사용할 경우 float 형식은 인수만큼의 소수점 자릿수로 반올림합니다.
value | 템플릿 | 결과값 |
3.14159 | {{ value|floatformat:3 }} | 3.142 |
3.00000 | {{ value|floatformat:3 }} | 3.000 |
3.56789 | {{ value|floatformat:3 }} | 3.568 |
특히 유용한 것은 float를 가장 가까운 정수로 반올림할 인수로 0을 전달하는 것입니다.
value | 템플릿 | 결과값 |
3.14159 | {{ value|floatformat:"0" }} | 3 |
3.00000 | {{ value|floatformat:"0" }} | 3 |
3.56789 | {{ value|floatformat:"0" }} | 4 |
float 형식으로 전달된 인수가 음수이면 소수점 자릿수로 반올림되지만 표시할 소수점 부분이 있는 경우에만 반올림됩니다.
value | 템플릿 | 결과값 |
3.14159 | {{ value|floatformat:"-3" }} | 3.142 |
3.00000 | {{ value|floatformat:"-3" }} | 3 |
3.56789 | {{ value|floatformat:"-3" }} | 3.568 |
float 형식으로 전달된 인수에 g 접미사가 있으면 천의 자리마다 콤마가 붙게 됩니다. (장고 버전 3.2부터 추가된 기능입니다.)
value | 템플릿 | 결과값 |
3456.34 | {{ value|floatformat:"2g" }} | 3,456.34 |
3456.06 | {{ value|floatformat:"g" }} | 3,456.1 |
3456.00 |
{{ value|floatformat:"-3g" }} | 3,456 |
장고를 이용해 숫자와 관련된 작업을 하다 보면, 숫자를 반올림해야 할 때가 있습니다. 이때, 파이썬의 반올림 함수를 사용하지 않고, 장고에 기본적으로 내장돼 있는 템플릿 필터인 floatformat 필터에 대해 알아보았습니다. 주식이나 코인 관련 웹 혹은 앱을 만들 때 유용하게 사용할 수 있는 필터이니 참고하시면 좋을 것 같습니다. floatformat 필터에 대해 보다 자세한 내용을 알고 싶으신 분들은 아래 장고 공식 홈페이지를 참고하시기 바랍니다.
장고 공식 홈페이지:
https://docs.djangoproject.com/en/3.2/ref/templates/builtins/
이밖에도 장고의 내장 필터는 아니지만, 간단한 설치를 통해 장고 템플릿에서 직접 숫자 작업을 할 수 있는 django-mathfilters도 있습니다. 아래 링크를 걸어놓을 테니 관심 있는 분들은 참고하시기 바랍니다.
장고-매스 필터 공식 홈페이지:
https://pypi.org/project/django-mathfilters/
'Django > Built-in template tags & filters' 카테고리의 다른 글
[장고] get_static_prefix 태그 사용방법 (0) | 2021.09.17 |
---|