当前位置: 代码迷 >> python >> 在 Django 模板中将数字四舍五入到最接近的 1000
  详细解决方案

在 Django 模板中将数字四舍五入到最接近的 1000

热度:65   发布时间:2023-06-27 21:48:59.0

我想在 Django 模板中将数字四舍五入到最接近的 1000。

就像是

{{ 123456 | round(1000) }}

123000

在 Django 中是否有内置的方法可以做到这一点,还是我应该编写一个自定义模板标签?

我 的找不到这样的功能。 最接近的是但我们只能四舍五入到一个整数(而不是千位等)。

然而,编写自定义模板过滤器并不难:

# app/templatetags/rounding.py

from django import template
from decimal import Decimal

register = template.Library()

@register.filter
def round_down(value, size=1):
    size = Decimal(size)
    return (Decimal(value)//size) * size

或者如果您打算只使用整数:

@register.filter
def round_down(value, size=1):
    size = int(size)
    return (value//size) * size

然后我们可以格式化它:

{% load rounding %}

{{ 123456|round_down:"1000" }}

然后生成:

>>> t = """{% load rounding %}{{ 123456|round_down:"1000" }}"""
>>> Template(t).render(Context())
'123000'
  相关解决方案