在django中将小数值限制为小数点后两位

ven*_*sai -1 python mysql django

这就是我得到一堆学校平均分的方法

def get_clu_average(self):
    clu_strength = 0
    clu_total = 0
    for school in self.school_set.all():
        clu_strength = clu_strength + school.strength
        clu_total = clu_total + school.get_average() * school.strength
    return clu_total / clu_strength
Run Code Online (Sandbox Code Playgroud)

所以该值将是一个十进制数。当我直接在模板中使用它时,我得到了很多小数位。如何将值限制为小数点后两位?

sch*_*ggl 5

floatformat您可以在模板中使用内置过滤器:

{{ value|floatformat:'2' }}     
Run Code Online (Sandbox Code Playgroud)

或者通过为上下文格式化字符串decimal.Decimal或使用实例而不是浮点来限制视图代码中的精度:

val = obj.get_clu_average()

val_str = '{.2f}'.format(val)
# OR
from decimal import Decimal as D
val_dec = D(val).quantize(D('0.01'))
Run Code Online (Sandbox Code Playgroud)